我具有asp.net核心标识,我希望是否可以检索使用该标识的任何用户的用户名。我知道我们可以从当前用户中减去Id(这仅适用于当前的Jwt令牌):
User.Identity.GetFirstClaimValueByType("id")
我阅读了其他问题,有人建议使用
string username = HttpContext.Current.GetOwinContext()
.GetUserManager<ApplicationUserManager>().FindById(ID).UserName;
因此,我尝试使用HttpContextAccessor,但没有GetOwinContext
的扩展方法,该如何访问它。
尝试:
但是现在我想发送ID以获得用户名,这可能吗?问候
_httpContextAccessor.HttpContext
答案 0 :(得分:1)
以下是如何在控制器内部使用ApplicationUserManager
的示例。
public class MyController : ControllerBase
{
private static ApplicationUserManager _userManager;
public MyController(ApplicationUserManager userManager)
{
_userManager = userManager;
}
[HttpGet]
public async Task<IActionResult> Get()
{
var user = await _userManager.GetUserAsync(User);
var userName = user.UserName;
}
}
请注意:ApplicationUserManager
的类型必须与Startup.cs为您的Identity类注册的UserManager<TUser>
的类型相同。