Почему моя таблица стилей перенаправляет меня на логин?
Я уверен, что это имеет какое-то отношение к 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()
), ресурсы станут доступными, я знаю, что это должна быть моя модель аутентификации, которая каким-то образом перепуталась. Он работает на другом сервере (я только что скопировал его). Любые идеи, как я могу отследить проблему?
Ответы
Ответ 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 "Чтение, список" и "Чтение и выполнение" (по умолчанию). Убедитесь, что изменения будут унаследованы всеми детьми, применяются, возможно, ждут, и вам будет хорошо идти.