在Asp .Net Core 5身份验证中获取用户,您可以使用UserManager类提供的方法。
首先,您需要注入UserManager类作为依赖项。您可以在控制器中这样做:
private readonly UserManager _userManager;
public SomeController(UserManager userManager)
{
_userManager = userManager;
}
然后,您可以使用以下方法获取用户:
var user = await _userManager.GetUserAsync(User);
这将使用当前登录的用户的User对象返回一个IdentityUser实例。如果用户未登录,则返回null。
如果您需要使用其他标识来查找用户,可以使用以下方法:
var user = await _userManager.FindByIdAsync(userId);
其中userId是用户的ID属性。您还可以使用其他标识,如用户名或电子邮件地址,根据需要进行查找。
以下是示例代码:
private readonly UserManager _userManager;
public SomeController(UserManager userManager)
{
_userManager = userManager;
}
public async Task GetCurrentUser()
{
var user = await _userManager.GetUserAsync(User);
if (user == null)
{
// User is not logged in
return Unauthorized();
}
return Ok(user);
}
public async Task GetUserById(string userId)
{
var user = await _userManager.FindByIdAsync(userId);
if (user == null)
{
// User with the provided ID does not exist
return NotFound();
}
return Ok(user);
}