查找当前,登录userId

问题描述 投票:0回答:1

我想访问当前登录 ASP.NET Core 6 的用户的 userId。我尝试了很多不同的方法,但所有方法似乎都有一个问题:user 始终为 null。

我试过这个

string userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

我也尝试过这个:

var userId = _userManager.GetUserId(User); 

var user = await _userManager.FindByIdAsync(userId);

还有很多其他的事情:(.

我的控制器的一部分:

[Route("api/[controller]")]
[ApiController]
public class UsersController : ControllerBase
{
    private readonly UserManager<ApplicationUser> _userManager;
    private readonly ApplicationDbContext _context;
    private readonly SignInManager<ApplicationUser> _signInManager;

    public UsersController(UserManager<ApplicationUser> userManager, ApplicationDbContext context, SignInManager<ApplicationUser> signInManager)
    {
        _userManager = userManager;
        _context = context;
        _signInManager = signInManager;
    }
}
asp.net-core-mvc .net-6.0 api-design
1个回答
0
投票

如果你想使用

User.FindFirstValue(ClaimTypes.NameIdentifier)
方法获取id,你需要确保id在claims中。

var user = await _userManager.FindByNameAsync(loginUserDto.UserName);
var claims = new[]
{
    new Claim(ClaimTypes.Name, loginUserDto.UserName),
    new Claim(ClaimTypes.NameIdentifier, user.Id)
};

或者

您可以使用

var result = await _userManager.FindByNameAsync(userName);
先获取当前用户,然后获取 id。

© www.soinside.com 2019 - 2024. All rights reserved.