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