Пользовательский поставщик членства в ролях: как установить конкретные роли для пользователя, чтобы использовать метод HttpContext.User.IsInRole? - PullRequest
0 голосов
/ 05 января 2012

Я реализую пользовательскую авторизацию с 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 Ответ

1 голос
/ 05 января 2012

Вы можете создать новый объект GenericPrincipal (идентификатор, роли) и назначить его для HttpContext.User в функции Application_AuthenticateRequest в global.asax. Я описал это в своем блоге . Вы можете использовать другой объект IIdentity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...