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

Формы auth redirecting css/script включает в себя страницу входа с HTTP 302

У меня есть несколько включений на странице входа, файле css и js файле.

<link rel="stylesheet" type="text/css" href="../../ext/resources/css/ext-all.css" />
<script type="text/javascript" src="../../ext/bootstrap.js"></script>

К сожалению, запросы, которые браузер делает для них, получают ответ 302. Forms Auth видит запрос как неавторизованный и перенаправляет его на страницу входа. Он не понимает, что запрос поступает со страницы входа в первую очередь.

GET http://localhost:50880/ext/resources/css/ext-all.css HTTP/1.1

HTTP/1.1 302 Found
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Account/LogOn?ReturnUrl=%2fext%2fresources%2fcss%2fext-all.css">here</a>.</h2>
</body></html>

Я подумал, что, возможно, настройка разрешений папки include (ext) всем может помочь.

У меня не было этой проблемы в других проектах.

4b9b3361

Ответ 1

Вам нужно исключить файлы css и изображения из проверки подлинности, как указано в файле конфигурации. Используя тег location, вы можете исключить один файл или каталог.

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

Ответ 2

У меня была та же проблема. Вот как я это решил.

В IIS7 нажмите на свой веб-сайт, затем дважды нажмите кнопку "Аутентификация". Нажмите "Анонимная аутентификация", затем нажмите ссылку "Изменить..." справа. Убедитесь, что установлен флажок "Идентификатор пула приложений".

Мой пул приложений работает под пользователем "Сетевая служба" (а не "ApplicationPoolIdentity" ). Вы можете выбрать Identity в дополнительных настройках пула приложений в IIS. Этот пользователь получил полный доступ к файловой системе для веб-сайта.

Ответ 3

Итак, вот что я сделал, это полностью решило проблему.

Во-первых, я внес изменения в файл web.config, как и все остальные.

Я использую анонимную аутентификацию в IIS, и, как указано в этой проблеме, я перешел в IIS > Пулы приложений > Щелкните правой кнопкой мыши мой пул приложений > Изменить > изменить пул приложений, чтобы использовать идентификатор пула приложений.

THEN - я пошел в родительскую папку, содержащую мой сайт, перешел в разрешения для этой папки и добавил учетную запись NETWORK SERVICE для доступа к этой папке. Это сделало это для меня. Это связано с тем, что пул приложений работает под ApplicationPoolIdentity, который является учетной записью NETWORK SERVICE на локальном компьютере.

Надеюсь, это поможет кому-то!

Ответ 4

Проблема, с которой я столкнулась в этом, заключалась в том, что я загрузил плагин jquery из Интернета и скопировал его в свой каталог содержимого на веб-сервере, и в Windows были заблокированы все файлы под ним, чтобы они не могли получить доступ к веб сервер. Разблокирование файлов в Windows решило проблему.

Ответ 5

Поздний ответ здесь, но я хотел помочь пролить свет на этот IISsue. (см., что я сделал?)

Во-первых, я хочу сказать, что ответ Дэвида Конлиска - это ответ на правильный ответ - гвоздь в голове. Но в случае, если вы похожи на меня и у вас развернуто множество приложений с формами и анонимными аутентификаторами, где анонимная идентификация Auth Identity установлена ​​в IUSR, и внезапно я вижу эту проблему сейчас, а затем слушайте, как Я воспроизвел эту проблему и, надеюсь, будет избавлен от такого же тяжелого положения.


Моя стандартная практика заключается в том, что мое приложение AppPoolIdentity работает как Сетевая служба. Затем я просто перехожу к фактическому каталогу на диске, на который указывает виртуальный каталог, → правой кнопкой мыши → Свойства → вкладка "Безопасность" → "Редактировать" → "Добавить пользователя службы сети" → "Разрешить права на чтение/запись".

Затем я включаю Anonyous Authentication в нужные мне каталоги (js, css и т.д.). Идентификатор пула приложений по умолчанию - IUSR.

OK. Теперь, внезапно в моей среде dev, я начинаю получать 302 формы auth-перенаправления на всех моих css и js! Что случилось? Я включил SVN-переключатель в своем веб-приложении в другую ветку в исходном управлении. Тьфу. Он полностью отключил все мои разрешения на диске для каждого отдельного файла. Единственный способ, которым я когда-либо мог это исправить, - удалить все веб-приложение и выполнить новую проверку и повторно применить разрешения на доступ к сети (или применить разрешения для каждого отдельного файла... и да, я попробовал удаление и повторное добавление разрешений в папку родительского уровня).

Итак, на этот раз я решаю "черт с ним". Я запускаю свое веб-приложение как Локальная система. Это покажет разрешения на диске, чей босс. Это время от времени работало на меня в качестве краткосрочного решения ". Но, увы, не сегодня. Клянусь вам, что на моих глазах я рассматриваю два развертывания веб-приложения с формами auth с точно такой же конфигурацией, и проблема 302 воспроизводится только на моей машине dev. Единственное отличие - это недавний переключатель SVN на моей машине.

Как только я вхожу в систему и получаю Cookie Forms Auth, js и css загружаются просто отлично.


Медведь со мной, я только что сделал шокирующее открытие. На всех серверах, на которых установлено это приложение, есть разрешения на читать, предоставленные MACHINE_NAME\Users. И моя машина Dev не делает. Как только я добавил это к моей машине dev, я смог загрузить мой css.


TL;DR;

Мораль истории - вы можете сохранить анонимную идентификацию Auth как IUSR, но затем вы должны предоставить всем пользователям права на чтение для вашего веб-приложения на диске.

Поскольку это плохая идея (по соображениям безопасности), я собираюсь применить новую практику для принятия ответа Дэвида С и сделать анонимную идентификацию Auth Identity как идентификатор пула приложений.