在Identity核心后登录的用户信息,我试图登录成功登录后的用户信息,但我刚开始空的用户名在LogSignIn行动。成功登录
在此方法中,我通过发送HttpContextBase类型对象并通知枚举来获取成功或错误消息来调用LogSignIn操作。
行动登录
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);
}
}
在这种方法中,我试图登录的用户信息的数据库,但Idenity没有在名称值。 签到记录仪
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);
}
}
}
所以,到目前为止我明白PasswordSignInAsync任务没有完成,我试图获取这仍然是不可用的信息。
我不知道这是最好的办法或不,但我试图在用户尝试登录时记录用户信息。
HttpContext.User.Identity将在登录操作中为空。你可以在我的回答中找到更多详细信息 –
是的,我已经更新了答案。 – Sajal