Asp.net core mvc 添加到用户的角色在IsInRole中不提供false
我正在尝试使用[Authorize(Roles=“Administrator”)] 但我总是被拒绝访问 为了测试添加的角色是否正确,我在控制器中添加了以下代码:Asp.net core mvc 添加到用户的角色在IsInRole中不提供false,asp.net-core-mvc,Asp.net Core Mvc,我正在尝试使用[Authorize(Roles=“Administrator”)] 但我总是被拒绝访问 为了测试添加的角色是否正确,我在控制器中添加了以下代码: var test=User.IsInRole("Administrator"); var user = await userManager.GetUserAsync(User); var roles =await userManager.Ge
var test=User.IsInRole("Administrator");
var user = await userManager.GetUserAsync(User);
var roles =await userManager.GetRolesAsync(user);
rolesOfUser = roles.ToList();
我把角色加错了吗
表示用户未登录或未完成所有身份验证过程。如果是这样,我该怎么做
播种数据:
public async Task SeedAsync()
{
context.Database.EnsureCreated();
if (await roleManager.RoleExistsAsync("Administrator") == false)
{
await roleManager.CreateAsync(new IdentityRole("Administrator"));
}
var user = await userManager.FindByEmailAsync("Jakob.Madsen@********.com");
if (user == null)
{
user = new IdentityUser()
{
UserName = "Jakob.Madsen@*********.com",
PhoneNumber = "*********",
Email = "Jakob.Madsen@*********.com",
};
var result = await userManager.CreateAsync(user, "*********");
if (result == IdentityResult.Success)
{
userManager.AddToRoleAsync(user, "Administrator").Wait();
}
else
{
throw new InvalidOperationException("Could not create Administrator");
}
}
var resultRoles = await userManager.GetRolesAsync(user);
if (resultRoles.Contains("Administrator") == false)
{
userManager.AddToRoleAsync(user, "Administrator").Wait();
}
}
更新:
我按照建议这样做。
现在它开始工作。IsInRole方法和
[Authorize(Roles=“Administrator”)]
属性检查此声明主体拥有的标识是否包含类型为ClaimsEntity.RoleClaimType的声明(http://schemas.microsoft.com/ws/2008/06/identity/claims/role
)其中,声明的值等于角色参数指定的值
总之,如果调用IsInRole,默认情况下会假设表示角色的声明具有上述类型,否则角色检查将不会成功。您可以通过列出索赔来确认:
var claims = User.Claims.ToList();
您还没有提供如何为角色设定种子,但可以找到许多代码示例:
另外,不要忘记注销并再次登录以查看所需的行为。IsInRole
方法和[Authorize(Roles=“Administrator”)]
属性检查此声明主体拥有的标识是否包含类型为ClaimSideEntity.RoleClaimType的声明(http://schemas.microsoft.com/ws/2008/06/identity/claims/role
),其中声明的值等于角色参数指定的值
因此,总而言之,如果调用IsInRole,默认情况下,假设您代表角色的声明具有上述类型–否则角色检查将不会成功。您可以通过列出声明来确认:
var claims = User.Claims.ToList();
您还没有提供如何为角色设定种子,但可以找到许多代码示例:
另外,不要忘记注销并再次登录以查看所需的行为