Почему моя таблица стилей перенаправляет меня на страницу входа? - PullRequest
26 голосов
/ 09 ноября 2010

Я уверен, что это как-то связано с IIS, но я не могу понять это.

У меня есть веб-сайт, использующий аутентификацию по формам. Когда мой веб-сайт пытается получить доступ к любым файловым ресурсам (файлы JavaScript, CSS и т. Д.), Я перенаправляюсь на страницу входа в формы, заданную в моем файле web.config Я также получаю перенаправление, если просто набираю адрес в адресной строке.

Запись web.config для форм auth довольно проста:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

Есть также два узла местоположения, чтобы запретить пользователям других частей сайта:

<location path="n2">
  <system.web>
    <authorization>
      <allow roles="Editors" />
    </authorization>
  </system.web>
</location>
<location path="web.config">
  <system.web>
    <authorization>
      <deny users="*" />
    </authorization>
  </system.web>
</location>

Я использую стандартную установку IIS7 на Windows Server 2008 R2.

Редактировать Итак, если я добавлю случайный файл cookie аутентификации (FormsAuthentication.SetAuthCookie()), ресурсы станут доступными, я знаю, что это должна быть моя модель аутентификации, которая как-то испортилась. Он работает на другом сервере (я просто скопировал его). Любые идеи, как я могу отследить проблему?

Ответы [ 7 ]

56 голосов
/ 06 мая 2011

У меня была такая же ошибка, в моем случае хитрость заключалась в том, чтобы настроить анонимную аутентификацию на использование идентификатора пула приложений вместо IUSR в IIS

  1. Открыть IIS
  2. Развернуть сайты
  3. Выберите [YourWebSite]
  4. Двойной щелчок Аутентификация (будет в разделе «Область IIS» или «Категория безопасности»)
  5. Выбор анонимной аутентификации
  6. Нажмите «Изменить»на панели действий
  7. Нажмите кнопку-переключатель «Идентификация пула приложений»
1 голос
/ 14 апреля 2016

В IIS моя анонимная аутентификация была включена правильно, и для пользователя был установлен IUSR. Поэтому мне нужно было зайти в проводник Windows, перейти в каталог своего веб-приложения, щелкнуть правой кнопкой мыши Свойства, вкладку «Безопасность», кнопку «Изменить» и дать IUSR разрешения «Чтение», «Список» и «Чтение и выполнение» (набор по умолчанию). Убедитесь, что изменения будут унаследованы всеми детьми, подайте заявку, возможно, подождите, и все готово.

1 голос
/ 09 ноября 2010

Я использую allow * для своей папки Content. Это предотвратит любую авторизацию статического контента.

  <location path="Content">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

Rick

0 голосов
/ 19 марта 2011

У меня было точно так же, и я обнаружил, что это потому, что я забыл разрешить анонимный доступ к сайту изнутри IIS!Это означало, что FormsAuthentication всегда включалась, даже для статических ресурсов, которые не были защищены.

0 голосов
/ 10 ноября 2010

Не используйте теги <location> в web.config для обработки авторизации в приложении ASP.NET MVC, поскольку местоположения больше не имеют смысла. Все, что вам нужно в web.config - это тег authentication. В MVC авторизация может быть достигнута путем украшения соответствующих контроллеров и / или действий с атрибутом [Authorize].

0 голосов
/ 09 ноября 2010

Это потому, что вы отказали всем. В IIS 7 благодаря встроенному конвейеру вы будете перенаправлены даже при попытке просмотра CSS или любой статической страницы.

Поместите статический контент в папку, если хотите, и разрешите доступ к ней.

0 голосов
/ 09 ноября 2010

Прошло много времени с тех пор, как я работал с формами asp.net, но первые вопросы были бы - уверены ли вы, что ваш пользователь является членом роли «Редакторы».Вы можете использовать инструмент администрирования веб-сайта, чтобы настроить это, я думаю?http://msdn.microsoft.com/en-us/library/ssa0wsyf.aspx

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