User.Identity.IsAuthenticated 在 SignInAsync 调用后返回 false
本文关键字:返回 false 调用 SignInAsync Identity IsAuthenticated User | 更新日期: 2023-09-27 18:36:39
我有一个弹出表单,我使用 jquery UI 对话框加载我的登录视图。单击"登录"按钮时,我使用 ajax post 调用帐户/登录操作。这是我的代码:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
//IsAuthenticated is returns false
bool isAuthenticated= User.Identity.IsAuthenticated;
return PartialView("_LoginPartial");
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
调用 SignInAsync 方法后,User.Identity.IsAuthenticated 返回 false 为什么会发生这种情况?
将不胜感激所提供的任何帮助。如果您需要任何其他信息来帮助回答这个问题,请告诉我
这是因为 asp.net 管道尚未对用户进行身份验证。
User.Identity.IsAuthenticated
值基于 HttpContext.Current。应该发生的情况是SignInAsync
将添加一个cookie,框架将使用该cookie对未来的请求进行身份验证。
因此,在此控制器操作被命中之后。 在所有控制器操作中User.Identity.IsAuthenticated
都是如此。AuthorizeAttribute
就是基于此。
要获取用户名,我会查看UserManager.FindAsync
返回的用户属性,即
var userName = user.UserName