自定义角色成员资格提供程序:如何为用户设置特定角色以使用HttpContext.User.IsInRole方法?

时间:2012-01-05 10:21:48

标签: asp.net-mvc

我正在使用OpenId实现自定义授权。 在数据库中,我有用户名(唯一),OpenId(唯一)和用户角色集。

当用户被授权时,我设置了

//GetRolesFromTheDBAndAssignThemToTheUser(); how?
FormsAuthentication.SetAuthCookie(GetUserName(OpenId), false);

在控制器上使用自定义属性:

 public override void OnAuthorization(AuthorizationContext filterContext)
        {
           //..some code

           var user = filterContext.HttpContext.User; //I can get user 
           var roles = Roles; //I can get roles
           var isAlowed = roles.Split(',').Any(user.IsInRole); //validate if user is alowed to use the current page or do other stuff
        }

但是我如何才能为用户设置特定角色才能使用HttpContext.User.IsInRole方法?

1 个答案:

答案 0 :(得分:1)

您可以创建新的GenericPrincipal(标识,角色)对象,并将其分配给global.asax中Application_AuthenticateRequest函数中的HttpContext.User。我在blog post中对此进行了描述。您可以使用其他IIdentity对象。