Проверка подлинности Windows и MVC: правильный способ исключить отдельный файл / маршрут - PullRequest
3 голосов
/ 27 июля 2011

У меня есть сайт MVC 3, который защищен аутентификацией Windows. Однако в корневом каталоге сайта есть физический файл, а также метод действия контроллера (через пользовательский маршрут), который должен быть доступен без аутентификации. Как правильно это сделать? Я хочу, чтобы весь сайт был защищен без необходимости [Authorize] в верхней части моих контроллеров (или в базовом классе контроллеров). В IIS 7 у меня включена анонимная проверка подлинности и проверка подлинности Windows в корневом каталоге сайта.

В настоящее время у меня есть следующие (применимые) разделы в моем Web.config:

<authentication mode="Windows" />
<location path="public.js"> <!-- physical file -->
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>
<location path="public.gif"> <!-- custom route to action method -->
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

Если я не поставлю [Authorize] наверх моего контроллера, меня никогда не попросят ввести учетные данные. Мне просто нужно где-то <deny users="?"/> или есть лучший способ подойти к этому с самого начала?

Спасибо!

1 Ответ

0 голосов
/ 27 июля 2011

Аутентификация для действий контроллера должна обрабатываться атрибутом [Authorize]. Параметры web.config применяются только к физическим файлам.

Если вы не хотите помещать атрибут [Authorize] на каждый контроллер, вы можете создать базовый класс контроллера, который включает атрибут [Authorize]. Все контроллеры, которые наследуются от этого базового класса контроллеров, автоматически требуют аутентификацию.

Лично мне не трудно добавить атрибут [Authorize] вручную для каждого контроллера и предпочесть более тонкий уровень управления.

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