#asp.net #web-config #forms-authentication #iis-express
#asp.net #web-config #формы-аутентификация #iis-express
Вопрос:
TLDR
Веб-сайт, на который я нанят для поддержания безопасности, обрабатывает безопасность в двух местах: web.config Forms-аутентификация и путем проверки сессионного файла cookie в code-behind на главной странице. Таким образом, изменение сведений о безопасности, например, предоставление доступа к некоторым страницам без входа в систему, требует изменений в both
местах. Просто забудьте об одном, и в сетевых инструментах разработки происходят странные вещи…
Мой веб-сайт работает действительно хорошо, но оставшиеся небольшие проблемы озадачивают меня. Он использует проверку подлинности Forms, но все файлы в корневом каталоге не ограничены; только некоторые каталоги имеют deny users=?
в локальном web.config. Тем не менее, страницы asp в корневом каталоге не могут быть доступны до входа в систему и отвечают 302 Found, Redirect
.
Это часть web.config в корне:
<authentication mode="Forms">
<forms name="MYWEBAPP.ASPXAUTH" loginUrl="~/Welkom.aspx"
protection="All" timeout="181" slidingExpiration="true" path="/"/>
</authentication>
и там нет <authorization>
раздела.
Предполагается, что пользователю должно быть разрешено перед входом в систему посещать страницы, подобные /Cookies.aspx , но с помощью FireFox F12 Dev Tools, вкладка Network, я вижу ответ 302, за которым следует перенаправление на /Login.aspx.
Это приводит к двум вопросам:
- почему 302, а не просто 200 OK и показать страницу cookie?
- почему переход к /Login.aspx, а не / Welkom.aspx?
Я признаю, что Welkom.aspx может показаться странным здесь, но он работал хорошо в течение многих лет, и это делает Response.Redirect("/Login.aspx")
, если в параметрах запроса есть подходящий url. Но я проверил с помощью точки останова отладчика в Page_Load(), и в приведенных выше вопросах Welkom.aspx.cs НЕ посещается, поэтому каким-то образом IIS (выражение) переходит прямо в /Login.aspx, очень странно.
Комментарии:
1. Вы искали текст «Login.aspx» в вашем проекте, чтобы проверить, есть ли перенаправление на Login.aspx?
2. @MohsinMehmood Хорошая мысль. Я уже нашел кое-что на главной странице. Теперь проблема практически решена
Ответ №1:
Проблема была не в том, как работает HTTP, а в моем собственном коде где-то в коде MasterPage, стоящем за этим вызываемым ответом.Перенаправление (). Когда ваша кодовая база становится большой, вкрадываются такие человеческие ошибки. Таким образом, из этого вопроса нет ничего технического, чему можно было бы научиться.