asp.net-mvc – Asp.net Identity:User.Identity.GetUserId()始终为空,User.Identity.IsAuthenticated总是为false

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – Asp.net Identity:User.Identity.GetUserId()始终为空,User.Identity.IsAuthenticated总是为false前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请参阅我的代码
  1. var result = await SignInManager.PasswordSignInAsync(model.UserName,model.Password,model.RememberMe,shouldLockout: false);
  2. switch (result)
  3. {
  4. case SignInStatus.Success:
  5. string UserId = User.Identity.GetUserId();
  6. return RedirectToAction("ClientDetails","Home");
  7. case SignInStatus.LockedOut:
  8. return View("Lockout");
  9. case SignInStatus.RequiresVerification:
  10. return RedirectToAction("SendCode","Account",new { ReturnUrl = returnUrl,RememberMe = model.RememberMe });
  11. case SignInStatus.Failure:
  12. default:
  13. ModelState.AddModelError("","Invalid login attempt.");
  14. return View(model);
  15. }

UserId始终为空,User.Identity.IsAuthenticated始终为false.但是我可以查看需要身份验证的View ClientDetails.

解决方法

我假设你的例子是你的AccountController.Login()方法代码.我有与您相同的问题,但发现用户对象将不会被填充,直到下一个请求.尝试这种方法
  1. case SignInStatus.Success:
  2. return RedirectToAction("DoWork","Account");
  3.  
  4.  
  5. public async Task<ActionResult> DoWork()
  6. {
  7. //this works
  8. string UserId = User.Identity.GetUserId();
  9. //return to View or Redirect again
  10. }

猜你在找的asp.Net相关文章