Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取aspusers表的id?_C#_Asp.net Core_Asp.net Web Api_Claims Based Identity - Fatal编程技术网

C# 如何获取aspusers表的id?

C# 如何获取aspusers表的id?,c#,asp.net-core,asp.net-web-api,claims-based-identity,C#,Asp.net Core,Asp.net Web Api,Claims Based Identity,我已经用asp.net核心和Identity创建了一个登录名;我已经知道如何获取用户名和角色,但是如何获取创建用户时自动生成的id 我已经设法获得了id,但前提是我将其作为常量放在声明中的名称标识符中,并且我希望每次用户登录时都能获得它,因为即使该常量已经更改,它也会始终为我提供相同的用户 通过这种方式,我可以获得id,前提是我将其设置为常量: new Claim(ClaimTypes.NameIdentifier, "f75ce3f5-f51b-41af-bedb-cfefbe2327a1")

我已经用
asp.net核心
Identity
创建了一个登录名;我已经知道如何获取
用户名
角色
,但是如何获取创建用户时自动生成的
id

我已经设法获得了id,但前提是我将其作为常量放在
声明中的
名称标识符中,并且我希望每次用户登录时都能获得它,因为即使该常量已经更改,它也会始终为我提供相同的用户

通过这种方式,我可以获得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 userId  = _userManager.GetUserId(User);
或:


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

非常感谢您的帮助,如果id是通过该代码获得的,但我还必须更改创建buildtoken的参数,以便在声明中使其可以传递id
var userId  = _userManager.GetUserId(User);
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);