我正在使用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方法?
答案 0 :(得分:1)
您可以创建新的GenericPrincipal(标识,角色)对象,并将其分配给global.asax中Application_AuthenticateRequest函数中的HttpContext.User。我在blog post中对此进行了描述。您可以使用其他IIdentity对象。