Owin 声明 - 添加多个 ClaimTypes.Role
Owin claims - Add multiple ClaimTypes.Role
我有一个可以为用户分配以下角色的应用程序:
- 超级管理员
- 管理员
- 用户
一个用户可能分配了两个或多个角色,例如。超级管理员和用户。我的应用程序使用声明,因此我也想通过声明来验证用户角色。喜欢:
[Authorize(Roles="Admin")]
不幸的是,我不知道如何向 ClaimTypes.Role 添加多个角色。我有以下代码:
var identity = new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Name, name),
new Claim(ClaimTypes.Email, email),
new Claim(ClaimTypes.Role, "User", "Admin", "SuperAdmin")
},
"ApplicationCookie");
如您所见,我试图添加更多的角色来说明,但显然它以错误的方式完成,因此不起作用。
因此非常感谢任何帮助。
一个声明身份可以有多个具有相同 ClaimType 的声明。这将使使用 HasClaim 方法检查特定 用户角色 是否存在成为可能。
var identity = new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Name, name),
new Claim(ClaimTypes.Email, email),
new Claim(ClaimTypes.Role, "User"),
new Claim(ClaimTypes.Role, "Admin"),
new Claim(ClaimTypes.Role,"SuperAdmin")
},
"ApplicationCookie");
@Parameswar Rao 解释得很好,但在动态角色的情况下
例如,用户对象已经具有 属性 类型列表角色
然后使用 localfunctions
ClaimsIdentity getClaimsIdentity()
{
return new ClaimsIdentity(
getClaims()
);
Claim[] getClaims()
{
List<Claim> claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, user.UserName));
foreach (var item in user.Roles)
{
claims.Add(new Claim(ClaimTypes.Role, item));
}
return claims.ToArray();
}
}
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = getClaimsIdentity()
}
我有一个可以为用户分配以下角色的应用程序:
- 超级管理员
- 管理员
- 用户
一个用户可能分配了两个或多个角色,例如。超级管理员和用户。我的应用程序使用声明,因此我也想通过声明来验证用户角色。喜欢:
[Authorize(Roles="Admin")]
不幸的是,我不知道如何向 ClaimTypes.Role 添加多个角色。我有以下代码:
var identity = new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Name, name),
new Claim(ClaimTypes.Email, email),
new Claim(ClaimTypes.Role, "User", "Admin", "SuperAdmin")
},
"ApplicationCookie");
如您所见,我试图添加更多的角色来说明,但显然它以错误的方式完成,因此不起作用。 因此非常感谢任何帮助。
一个声明身份可以有多个具有相同 ClaimType 的声明。这将使使用 HasClaim 方法检查特定 用户角色 是否存在成为可能。
var identity = new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Name, name),
new Claim(ClaimTypes.Email, email),
new Claim(ClaimTypes.Role, "User"),
new Claim(ClaimTypes.Role, "Admin"),
new Claim(ClaimTypes.Role,"SuperAdmin")
},
"ApplicationCookie");
@Parameswar Rao 解释得很好,但在动态角色的情况下
例如,用户对象已经具有 属性 类型列表角色
然后使用 localfunctions
ClaimsIdentity getClaimsIdentity()
{
return new ClaimsIdentity(
getClaims()
);
Claim[] getClaims()
{
List<Claim> claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, user.UserName));
foreach (var item in user.Roles)
{
claims.Add(new Claim(ClaimTypes.Role, item));
}
return claims.ToArray();
}
}
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = getClaimsIdentity()
}