dans le coeur Identité, je suis en train de vous connecter les informations utilisateur après la connexion réussie, mais je suis juste devient vide UserName dans le LogSignIn l'action.journal des informations utilisateur après la connexion réussie
Dans cette méthode j'appelle l'action LogSignIn en envoyant l'objet de type HttpContextBase et notifie enum pour obtenir le succès ou le message d'erreur.
action Connexion
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);
}
}
Dans cette méthode, je suis en train de vous connecter les informations utilisateur à la DB, mais Idenity n'ont pas la valeur dans le nom. 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);
}
}
}
Alors, bien ce que je comprends que tâche PasswordSignInAsync n'a pas terminé et je suis en train de chercher l'information qui est toujours pas disponible.
Je ne sais pas si c'est une meilleure approche ou non, mais j'essaie d'enregistrer les informations de l'utilisateur au moment où l'utilisateur essaie de se connecter.
HttpContext.User.Identity sera vide dans l'action de connexion. Vous pouvez trouver plus de détails dans ma réponse –
Oui, j'ai mis à jour la réponse. – Sajal