заблокировать метод вызова класса на основе роли пользователя asp.net mvc 3 - PullRequest
1 голос
/ 14 октября 2011

Я создаю свое первое приложение ASP.NET MVC 3, и у меня возникает проблема с созданием экземпляра класса на основе роли пользователя.

У меня есть класс с именем Account, и он содержит информацию об учетных записях пользователей и несколькометоды, которые позволяют мне манипулировать (обновлять) информацию об учетной записи пользователя.Например, ChangeNickName, AddToGroup, RemoveFromGroup, Ban и т. Д.

Как вы можете видеть, проблема с этими методами заключается в том, что я не хочу позволять кому-либо использовать метод AddToGroup или Ban, но только пользователю с указанной ролью (i 'используя систему реализации ролей ASP.NET по умолчанию)

Так что мне интересно, есть ли способ добавить атрибут [Authorize (Roles = "Admin")] в мой AddTogroupMethod так же, как я использую его в методах контроллера

Я знаю, что при правильной реализации контроллеров мне не нужно что-то подобное, но я хочу убедиться, что я не позволю никому создавать экземпляр класса (или использовать указанные методы случайно), если пользователь не является частью указанной роли.

Так, например, если я случайно добавлю доступ к методу AddToGroup в пользовательском контроллере, я все равно смогу запретить им использовать ошибку из-за атрибута, прикрепленного к этому методу

Если я могу 't решить эту проблему с атрибутами, есть ли способ заставить VS заблокировать меня от отладки приложенияЕсли я сделаю вызов метода AddToGroup из класса xy

Если у вас есть какие-либо идеи, как это сделать, я открыт для предложений

Заранее

1 Ответ

0 голосов
/ 15 октября 2011

Вы, вероятно, должны использовать AuthorizeAttribute, однако вы можете проверить роль текущего пользователя в коде, используя Roles.UserIsInRole.

Здесь есть небольшая информация об этом в MVC (сборка, кажется, имеетизменено между 3.5 / 4.0):

asp.net mvc -> Roles.IsUserInRole (имя пользователя, роль)

...