我如何获得aspusers表的ID?

问题描述 投票:0回答:1

我创建了一个带有asp.net coreIdentity的登录名;我已经知道如何获取usernamerole,但是如何获取创建用户时自动生成的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;
c# asp.net-core asp.net-web-api claims-based-identity
1个回答
0
投票

您是否尝试过以下语句:

var userId  = _userManager.GetUserId(User);

或:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.