2009-11-15 6 views
2

Мы получаем наш новый проект MVC с земли и пытаемся решить проблемы аутентификации и авторизации (предпочтительно с помощью фильтров действий). Наши роли будут встречаться как группы AD (уже определенные для нас), поэтому нам действительно нужно прочитать группы, в которых находится пользователь (от личности). Если вы находитесь в одной из групп, вы считаетесь аутентифицированной, и правильная авторизация зависит от действия/контроллера (определенные роли могут выполнять определенные вещи). Есть ли практическая польза от использования пользовательского поставщика членства? Есть ли способ, которым я могу глобально аутентифицироваться (поскольку мы используем интегрированную защиту, нет входа в систему, и вы не можете получить доступ к какой-либо странице, если вы не авторизованы), поэтому нам не нужно было бы помещать теги [Authenticate] на каждый контроллер? Есть ли пример реализации, к которому у кого-то может быть ссылка?Аутентификация/авторизация проекта ASP.NET MVC

ответ

4

Есть ли практическое преимущество по сравнению с с использованием пользовательского поставщика членства?

Да. Я обнаружил, что поставщик membeship по умолчанию не подходит в большинстве случаев для наших нужд.
Честно говоря, с ним больше болит, чем кататься на своем обычном, что будет довольно простым.
Это не означает, что вы не должны использовать Identity, просто подключайтесь к идентификатору и продолжайте его использовать.

Есть ли способ я могу глобально проверку подлинности (так как мы используем комплексной безопасности, нет Логина и вы не можете получить доступ к любой странице, если вы не AUTH), поэтому мы Wouldn» t есть , чтобы поставить теги [Authenticate] на каждый контроллер ?

Самый лучший вариант для меня - применить [Аутентификация] к базовому контроллеру и наследовать его от него.
Если вы можете написать свой собственный HttpHandler/Module или подключить его к ControllerFactory.
Но это не стоит.

Другое дело, что, возможно, разные контроллеры нуждаются в разных ролях, поэтому в этом случае вам необходимо применить [Authenticate (Роли = «a, b, c, d»)] для каждого из них.

Есть ли пример реализации У кого-то есть ссылка?

Невозможно опубликовать готовые примеры для вас (под NDA). Но из того, что вы описали, вам действительно мало что нужно сделать. Просто примените атрибут [Authenticate] и все.

0

надлежащее разрешение зависит от действия/контроллера (определенные роли могут выполнять определенные вещи).

I вторая идея Дмитрия о базовом контроллере. После аутентификации пользователя с AD вы можете поместить свое имя группы в файл cookie, а затем прочитать его в базовом контроллере. Вы могли бы сопоставлять групповые роли в файле XML или что-то в этом роде. Я делаю это: в базовом контроллере я переопределяю метод OnActionExecuting, и там я выясню, какие действия и контроллер они запрашивают, затем я проверяю его на сопоставления ролей XML, которые я кеширую, и если пользователю разрешено то я разрешаю метод, иначе я их перенаправляю.

Смежные вопросы