2010-11-09 3 views
24

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

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

+0

Вы когда-нибудь решали это? Имея точно такую ​​же проблему. – starskythehutch

ответ

51

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

  1. Открыть IIS
  2. Expand Сайты
  3. Выберите [YourWebSite]
  4. двойной аутентификации мыши (будет под IIS "Area" или "Категория" Безопасность)
  5. Выберите Anonymous Authentication
  6. Нажмите кнопку Изменить в панели Действия
  7. Нажмите на кнопку «Применение удостоверения пула» Radio
+4

И для тех, кто ищет, где это сделать: Диспетчер служб IIS -> Сайты -> Веб-сайт по умолчанию -> [YourWebSite] -> Аутентификация -> Анонимная аутентификация -> Изменить -> Анонимный идентификатор пользователя: идентификатор пула приложений – Nailuj

+1

На сервере 2012 iis 8.5> Сайты> [yoursite Home]> (в группе IIS) Аутентификация> Анонимная аутентификация - Изменить> идентификатор пула приложений (https://www.dropbox.com/s/8ytk3zwkyqsmm0c/iis8_anon_creds.png?dl= 0) – jaybro

0

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

+0

Я даже не пытаюсь найти путь, требующий роли редакторов, но я уверен, что я в нем. – scottm

0

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

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

+0

Разве я не говорю, что всем отказано в доступе к файлу web.config? Даже если я удалю эти последние два узла местонахождения, произойдет то же самое. – scottm

+0

Ох ... извиняюсь за отсутствие этой части web.config. Можете ли вы попробовать добавить дополнительно Разрешить анонимным пользователям?

+0

Вы также можете попробовать с помощью простого нового приложения и посмотреть, сможете ли вы просматривать статические файлы или нет. ЕСЛИ, случайно, даже это не работает ... Я бы рекомендовал проверить, содержит ли ваш компьютер символ подчеркивания в его имени. –

1

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

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

Рик

+0

Я тоже пробовал это, но получаю тот же результат. Я в тупике. – scottm

+0

Заполните свой проект и отправьте его мне, если хотите. rrb у матрицы 6 точка com. Или, что еще лучше, создайте меньший тестовый проект, в котором есть только основные проблемы, которые могут возникнуть. – rboarman

0

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

+0

У меня есть приложение webforms в каталоге внутри моего проекта mvc. По-видимому, места имеют смысл, потому что без записи для N2 пользователи не перенаправляются на вход в систему. – scottm

+1

Я не согласен, метки местоположений действительно используются в приложениях MVC. Я должен был использовать их, чтобы анонимный доступ к двум папкам статических ресурсов. – Kev

+0

Я тоже не согласен. Я использую их для своей папки содержимого и для моих страниц входа/регистрации. – rboarman

0

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^