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
Asp.net core asp.net核心2.0 IsInRole()_Asp.net Core_Asp.net Core 2.0 - Fatal编程技术网

Asp.net core asp.net核心2.0 IsInRole()

Asp.net core asp.net核心2.0 IsInRole(),asp.net-core,asp.net-core-2.0,Asp.net Core,Asp.net Core 2.0,这似乎是一个简单的练习,但我不明白为什么这是不同的 User.HasClaim(System.Security.Claims.ClaimTypes.Role,“AdminRole”) 真的 User.IsInRole(“AdminRole”) 假的 上述评估结果应该是相同的,但事实并非如此。我只是使用cookies身份验证并将声明加载到声明原则中 当我尝试使用像[Authorize(Role=“AdminRole”)]这样的Authorize属性时,这就成了一个问题,该属性在具有似乎正确的角色声

这似乎是一个简单的练习,但我不明白为什么这是不同的

User.HasClaim(System.Security.Claims.ClaimTypes.Role,“AdminRole”)

真的

User.IsInRole(“AdminRole”)

假的

上述评估结果应该是相同的,但事实并非如此。我只是使用cookies身份验证并将声明加载到声明原则中


当我尝试使用像[Authorize(Role=“AdminRole”)]这样的Authorize属性时,这就成了一个问题,该属性在具有似乎正确的角色声明时返回false

如果您在这里寻找使用ASP.net core 2或更高版本中的属性检查角色的正确语法,则答案与上面删除的答案几乎相同:

[Authorize(Roles = "Admin")]

您能否演示在何处设置声明的值?声明仅在重新验证后才会刷新。如果更新声明,则应注销用户并重新登录。声明已设置,然后用户通过Wait httpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,claimsPrincipal)登录;另外,由于HasClaims能够返回true,这意味着声明本身设置正确,因此IsInRole也应该返回true,对吗?HasClaim和IsInRole都是同时计算的,但结果不同。能否尝试在配置中使用TokenValidationParamates选项将其映射到角色声明,如options.TokenValidationParameters=new TokenValidationParameters{RoleClaimType=System.Security.ClaimTypes.Role}另外,查看AddClaims的身份验证选项和代码也会有所帮助。