Настройка безопасности в ASP.NET MVC во время выполнения - PullRequest
0 голосов
/ 21 марта 2010

Можно ли настроить безопасность в ASP.NET MVC во время выполнения? Например, если у меня есть контроллер, помеченный как

[Authorize(Roles="Admin")]

Есть ли способ добавлять / удалять роли во время выполнения? Или вам нужно изменить его в коде и пересобрать?

Ответы [ 3 ]

1 голос
/ 22 марта 2010

Полагаю, вам нужны такие функции, потому что вы добавляете новые роли во время выполнения и пытаетесь соединить их с функциями, которые предоставляет ваше приложение. Если я не ошибаюсь, у вас также должен быть где-то список функциональных возможностей (в БД, реестре или конфигурационном файле). Учитывая все это, я полагаю, что вы ставите пользователей в роли и прикрепляете роли к функциональности, и вы сохраняете эти отношения в хранилище данных.

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

[AuthorizeUsers]

вместо

[Authorize(Roles="Admin")] 

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

Точный пример кода для создания пользовательской авторизации можно найти в исходном коде ASP.NET MVC - пространстве имен System.Web.Mvc.

НТН

1 голос
/ 21 марта 2010

Да, вам придется предоставить собственную реализацию IPrincipal, которая позволит это сделать.Все, что делает метод Authorize - это вызывает метод User.IsInRole ("Admin").

0 голосов
/ 21 марта 2010

Если вы хотите создать что-то свое, вы можете создать свою собственную схему авторизации.

Взгляните на AuthorizeAttribute - вот статья , в которой есть простое сравнение двух механизмов.

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