我创建了一个带有asp.net core
和Identity
的登录名;我已经知道如何获取username
和role
,但是如何获取创建用户时自动生成的id
?
我已经设法获取了id,但是仅当我将其作为常量放置在NameIdentifier
中的Claim
中时,并且我想每次用户登录时都获取它,因为常量总是会给我相同的用户,即使它已经更改。
这样,只要我将其设置为常数,我就可以获取ID:
new Claim(ClaimTypes.NameIdentifier, "f75ce3f5-f51b-41af-bedb-cfefbe2327a1"),
这里创建索赔清单:
private UserToken BuildToken(UserInfo userInfo, IList<string> roles)
{
var claims = new List<Claim>()
{
new Claim(JwtRegisteredClaimNames.UniqueName, userInfo.Email),
new Claim(ClaimTypes.Name, userInfo.Email),
new Claim(ClaimTypes.NameIdentifier, "f75ce3f5-f51b-41af-bedb-cfefbe2327a1"),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
这里我在控制器中查找用户标识:
var user = await _userManager.GetUserAsync(HttpContext.User);
concepto.id_Prop = Guid.Parse(user.Id.ToString());
context.Add(concepto);
await context.SaveChangesAsync();
return concepto.id_Conceptos;
您是否尝试过以下语句:
var userId = _userManager.GetUserId(User);
或:
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
通过这种方式,在asp.net core 3.1中,我可以获得登录用户的ID。