【问题标题】:How can I get the id of the aspusers table?如何获取 aspusers 表的 id?
【发布时间】:2020-09-15 01:45:46
【问题描述】:

我使用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())
        };

这里我在控制器中查找用户 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


    【解决方案1】:

    您是否尝试过以下语句:

    var userId  = _userManager.GetUserId(User);
    

    或者:

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

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

    【讨论】:

    • 非常感谢您的帮助,如果 id 是使用该代码获得的,但我还必须更改创建 buildtoken 的参数,以便在声明中我使它可以传递 id
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2020-04-06
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多