如何获取 aspusers table 的 ID?

How can I get the id of the aspusers table?

我已经使用 asp.net coreIdentity 创建了一个登录;我已经知道如何获取usernamerole,但是如何获取创建用户时自动生成的id

我已经设法获取了 id,但前提是我将它作为常量放在 Claim 中的 NameIdentifier 中,并且我想在每次用户登录时获取它,因为常量总是给我相同的用户,即使它已经改变了。

这样我就可以得到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())
        };

这里我在controller中查找用户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;

你试过下面的语句了吗:

var userId  = _userManager.GetUserId(User);

或者:

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

通过这种方式,在asp.net core 3.1中,我可以获得登录用户的id。