Авторизация MVC3-ASP.NET - PullRequest
2 голосов
/ 01 июня 2011

Я использую проверку подлинности Windows в своем приложении.Я использую MVC3 –Asp.Net с платформой Entity.У меня есть список меню, в котором находятся кнопки.Я показываю их, используя их, используя карту сайта.Я могу скрыть или показать эти кнопки, используя роли, доступные в Active Directory.У меня есть две проблемы

1) Если я вхожу в систему как обычный пользователь (некоторые кнопки мне не видны), это то, что я хочу, но если я набираю Controller / Action (эта страница должнабыть невидимым для меня) в браузере он загружается.

Решение:

Я проверяю пользователя и его роль в качестве первой строки в действии, если яавторизованный, чтобы увидеть это, то я показываю, иначе перенаправляя на другую страницу. Требуется время для аутентификации пользователя из Active Directory.

2) Если я вхожу в систему как основной пользователь и пытаюсь увидеть действие, авторизованное дляСупер-пользователь все равно отображает (когда я вручную набираю имя контроллера и действия)

Решение:

Я проверяю пользователя и его роль в качестве первой строки вДействие, если мне разрешено это видеть, то я отображаю перенаправление на другую страницу. Требуется время для аутентификации пользователя из Active Directory.

Пояснения:

Я могу использовать атрибут Authorize с ролями, и я думаю,это только для членства ASP.NET, и, следовательно, не работает, так как мои роли поступают из Active Directory в системе.

Вопрос:

Может ли кто-нибудь указать мне на решение, где вместо проверки разрешений для каждого представления я не могу сделать это в Global.asax файл.Если я могу аутентифицировать пользователя один раз, когда он вошел в систему, мне не нужно аутентифицировать его для других представлений.

1 Ответ

1 голос
/ 01 июня 2011

В обоих случаях я бы предложил вам написать собственный RoleProvider Active Directory Role Provider .Затем, если вы правильно настроили MembershipProvider и RoleProvider, атрибут Authorize должен работать.

Чтобы избежать получения ролей пользователя по каждому запросу через RoleProvider, вы можете кэшировать роли этого пользователя в сеансе.Вы можете сделать это в пользовательском RoleProvider или с помощью пользовательского атрибута Authorize.

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