微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

请参阅我的代码
var result = await SignInManager.PasswordSignInAsync(model.UserName,model.Password,model.RememberMe,shouldLockout: false);
switch (result)
{
    case SignInStatus.Success:
        string UserId = User.Identity.GetUserId(); 
        return RedirectToAction("ClientDetails","Home");
    case SignInStatus.LockedOut:
        return View("Lockout");
    case SignInStatus.Requiresverification:
        return RedirectToAction("SendCode","Account",new { ReturnUrl = returnUrl,RememberMe = model.RememberMe });
    case SignInStatus.Failure:
    default:
        ModelState.AddModelError("","Invalid login attempt.");
        return View(model);
}

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

解决方法

我假设你的例子是你的AccountController.Login()方法代码.我有与您相同的问题,但发现用户对象将不会被填充,直到下一个请求.尝试这种方法
case SignInStatus.Success:
    return RedirectToAction("DoWork","Account");


public async Task<ActionResult> DoWork()
{
    //this works
    string UserId = User.Identity.GetUserId();
    //return to View or Redirect again
}

原文地址:https://www.jb51.cc/aspnet/250346.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐