【发布时间】:2020-09-15 01:45:46
【问题描述】:
我使用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())
};
这里我在控制器中查找用户 ID:
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;
【问题讨论】:
标签: c# asp.net-core asp.net-web-api claims-based-identity