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
}

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....