每当用户登录应用程序时,我想了解创建CustomRoles的想法。 我的特征模型如下所示:
public class Feature : AuditableEntity
{
[Display(Name = "Code")]
[MaxLength(50)]
public string FeatureCode { get; set; }
}
我想根据要素模型中的FeatureCode创建角色,以便当用户登录应用程序时,行为的角色分配给该特定用户。
我想使用这样的东西:
bool value = user.isInRole(FeatureCode)
将根据为用户分配的功能返回true或false。 提前谢谢。
答案 0 :(得分:0)
我使用ClaimsAuthentionManager类来提供机制来转换具有声明(角色)的传入用户。以下是自定义ClaimsAuthenticationManager的一些示例代码:
public class ClaimsTransformationModule : ClaimsAuthenticationManager
{
public override ClaimsPrincipal Authenticate(string resourceName, ClaimsPrincipal incomingPrincipal)
{
if (incomingPrincipal != null && incomingPrincipal.Identity.IsAuthenticated == true)
{
Claim nameIdentifier = incomingPrincipal.Claims.Where(foo => foo.Type == ClaimTypes.Name).FirstOrDefault();
var roles = GetRoles(nameIdentifier.Value); // Get the roles from the backend based on the user
foreach (var role in roles) //This is the part applying roles to the Claim (user)
{
((ClaimsIdentity)incomingPrincipal.Identity).AddClaim(new Claim(ClaimTypes.Role, role));
}
((ClaimsIdentity)incomingPrincipal.Identity).AddClaim(new Claim(ClaimTypes.Sid, GetUserId(nameIdentifier.Value)));
}
return incomingPrincipal;
}
然后在Web.config中,您可以将系统配置为使用自定义的Claims Manager:
<system.identityModel>
<identityConfiguration>
<claimsAuthenticationManager type="ClaimsTransformation.ClaimsTransformationModule, ClaimsTransformation" />
然后获取当前登录用户的角色:
var user = ClaimsPrincipal.Current;
bool isInRole = user.IsInRole(roleName);
但请查看leastprivilege.com网站以获取更多信息。
干杯弗兰克