Подтвердить что ты не робот

Почему моя таблица стилей перенаправляет меня на логин?

Я уверен, что это имеет какое-то отношение к 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.

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

4b9b3361

Ответ 1

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

  • Открыть IIS
  • Развернуть сайты
  • Выберите [YourWebSite]
  • Дважды щелкните "Аутентификация" (будет находиться под IIS "Area" или "Категория безопасности" )
  • Выберите анонимную аутентификацию
  • Нажмите "Изменить" на панели "Действия"
  • Нажмите переключатель "Идентификатор пула приложений"

Ответ 2

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

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

Rick

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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