Как мне пройти авторизацию в MVC 2? - PullRequest
0 голосов
/ 04 августа 2011

Как мне пройти авторизацию в MVC 2?

Я хочу использовать группы / роли AD, а не заданные по умолчанию. Кажется, это «AspNetSqlMembershipProvider».

В любом случае я положил:

[Authorize(Users = "username")]
        public ActionResult About()
        {
            ViewData["Welcome"] = "Welcome About";

            return View();
        }

А затем загрузка страницы дает мне: Имя соединения 'ApplicationServices' не найдено в конфигурация приложения или строка подключения пуста.

Line 34:       <providers>
Line 35:         <clear />
Line 36:         <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
Line 37:       </providers>
Line 38:     </membership>

Я прочитал этот стекопоток , но после создания пользовательского класса AuthorizationAttribute, расширяющего ActionFilterAttribute ContextCache, IoC и ряд других вещей, решить не удалось, и не совсем уверен, куда идти дальше. Я также прочитал этот стекопоток , и он предлагает по-другому, начать путаться.

Как мне использовать группы AD вместо AspNetSqlMembershipProvider в приложении MVC?

Бонусный вопрос: скажем, у меня есть кнопка "Изменить" на странице. Могу ли я добавить логику, чтобы решить, следует ли отображать эту кнопку на основе авторизации?

Спасибо за вашу помощь.


Редактировать: дополнительная информация.

Я не собираюсь блокировать или разрешать ВСЕ доступ к этому сайту.

Я намерен иметь 3 основных группы пользователей, различающих уровень доступа, то есть Super Admin, Admin, Базовый доступ.

Не будет формы входа в систему, когда пользователь заходит на сайт, мы проверим, к какой группе он относится, а затем страница отобразится на основе этого.

Так, например, пользователь «bob» в группе «Базовый доступ» попадет на страницу и кнопки / действия, такие как «Редактировать», «Удалить», будут отключены, поэтому в основном это группа только для чтения. Но у пользователя 'jim' в группе 'Super Admin' есть все доступные ему действия / кнопки. Как мне этого добиться?

Ответы [ 3 ]

1 голос
/ 04 августа 2011

Вы должны посмотреть на Аутентификация Windows

Все еще используйте атрибут Authorize на ваших контроллерах / действиях, но настройте свой сайт на использование аутентификации Windows.

Бонусный ответ: Чтобы проверить аутентификацию и авторизацию в коде, вы можете использовать одно из следующих действий от контроллера:

this.User.Identity.IsAuthenticated
this.User.Identity.Name
this.User.IsInRole("roleName")
1 голос
/ 04 августа 2011

Ответы на использование проверки подлинности Windows прекрасно работают со следующими предостережениями.

Во-первых, сервер должен быть присоединен к вашему домену. И он должен иметь свободный доступ AD, если есть какие-либо брандмауэры на месте.

Во-вторых, у вас должно быть все в порядке с появлением всплывающего диалогового окна для входа в систему, а не использования входа в систему на основе формы.

Если вам нужен AD с входом в формы, значит, требуется больше работы. Можете ли вы быть более конкретными о своих потребностях?

0 голосов
/ 04 августа 2011

ну, вы можете ограничить доступ к сайту через webconfig.

    <authentication mode="Windows" />
    <authorization>
        <allow roles="[YOURADSERVER]\[YOUR AD GROUP]"/>
        <deny users="*"/>
    </authorization>

это заблокирует любые другие, не указанные в данных группах объявлений.

в IIS вам нужно отключить анон доступ и включить аутентификацию windows

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