in Identity Kern, Ich versuche, die Benutzerinformationen nach erfolgreicher Anmeldung anmelden, aber ich bin gerade leer Username im LogSignIn Aktion zu bekommen.Log Benutzerinformationen nach erfolgreicher Anmeldung
In dieser Methode rufe ich LogSignIn Aktion durch Senden von HttpContextBase Typ Objekt und notify Enum, um die Erfolgs- oder Fehlermeldung zu erhalten.
Aktion Anmeldung
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
{
SignInLogger.LogSignIn(HttpContext, Notify.Success);
return RedirectToLocal(returnUrl);
}
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
SignInLogger.LogSignIn(HttpContext, Notify.Error);
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
Bei dieser Methode Ich versuche, die Benutzerinformationen an die DB aber Idenity einzuloggen nicht den Wert im Namen haben. SignIn Logger
public static void LogSignIn(HttpContextBase httpcontext, Notify notifymessage)
{
using (var context = new WorkshopEntities())
{
MessageLog log = new MessageLog();
log.Date = DateTime.Now;
log.Type = (int)MessageLogType.Information;
log.Message = "Logged In";
log.CustomMessage = notifymessage.ToString();
log.UserEmail = httpcontext.User.Identity.Name ?? "N/A";
log.Address= HttpContext.Current.Request.UserHostAddress;
context.MessageLogs.Add(log);
try
{
context.SaveChanges();
}
catch (Exception ex)
{
ErrorLogger.LogError(ex);
}
}
}
So weit, was ich verstehe, dass PasswordSignInAsync Aufgabe nicht abgeschlossen, und ich versuche, die Informationen zu holen, die noch nicht verfügbar ist.
Ich weiß nicht, es ist eine beste Vorgehensweise oder nicht, aber ich versuche, die Benutzerinformationen zu dem Zeitpunkt des Benutzers zu protokollieren, versuchen Sie, sich anzumelden.
HttpContext.User.Identity ist innerhalb der Login-Aktion leer. Sie können weitere Details in meiner Antwort finden –
Ja, ich habe die Antwort aktualisiert. – Sajal