#asp.net #authentication
#asp.net #аутентификация
Вопрос:
Я не могу пояснить, как asp.net Аутентификация работает, я установил следующую конфигурацию в соответствии со справочным документом и Google:
<configuration>
<!--
Login.aspx and the random_code_img.aspx does not need authentication
But excluding the above files,all the page are protected.
-->
<location path="Login.aspx">
</location>
<location path="random_code_img.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
..........
</system.web>
</configuration>
Теперь в login.aspx.cs:
Внутри метода loginButton_click:
if (Membership.ValidateUser(username, password))
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
username,
DateTime.Now,
DateTime.Now.AddMinutes(30),
isPersistent,
"",
FormsAuthentication.FormsCookiePath);
// Encrypt the ticket.
string encTicket = FormsAuthentication.Encrypt(ticket);
// Create the cookie.
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
// Redirect back to the protected URL.
Session["havelogined"] = "1";
HttpContext.Current.Response.Write("<script>location.replace('Default.aspx')</script>");
}
else{
//do something
}
Однако в login.aspx, после того как я ввожу имя и пароль, а затем нажимаю кнопку входа, я был перенаправлен на Default.aspx в адресной строке браузера, но я не могу видеть содержимое Default.aspx, я просто вижу:
Доступ запрещен. Описание: Произошла ошибка при доступе к ресурсам, необходимым для обслуживания этого запроса. Возможно, сервер не настроен для доступа к запрошенному URL.
Сообщение об ошибке 401.2…………….
Итак, мне интересно, как работает asp.net Система аутентификации знает, авторизован я или нет? Могу ли я заменить это уведомление какой-нибудь читаемой информацией?
Также,
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
Что здесь означает «пользователи»?
Я не думаю, что они являются зарегистрированными пользователями в моей базе данных.
Комментарии:
1. Вы, должно быть, расстроены, если ругаетесь в названии вопроса.
Ответ №1:
Код состояния HTTP 401.2 соответствует «Метод аутентификации не настроен». Мне понадобится больше информации для подтверждения. Если бы мне пришлось угадывать, я бы сказал, что вам не хватает тега <forms> под тегом <authentication> .
Если вы еще не нашли эту статью, вы можете попробовать эту ссылку, в которой рассказывается о том, как полностью настроить аутентификацию в формах — http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx
the
<allow users="*"/>
означает разрешить всем пользователям. По сути, это инструктаж ASP.NET разрешить всем пользователям (прошедшим проверку подлинности или не прошедшим проверку подлинности) доступ к random_code_img.aspx
КСТАТИ:
<deny users="?"/>
означает не допускать пользователей, не прошедших проверку подлинности.
Надеюсь, это поможет.
Комментарии:
1. Да. 401.2 часто возникает в IIS, потому что анонимная аутентификация не была включена.
2. @Naraen: Я прочитал руководство по ссылке, которую вы публикуете, оно работает сейчас, но мне интересно, как «FormsAuthentication. RedirectFromLoginPage»работает? на какую страницу он перейдет, если нет страницы «С»? Я имею в виду, если я просто ввожу Login.aspx, затем отправляю, как asp.net знаете, на какую страницу перенаправлять?
3. @hguser — Он использует параметр returnUrl queryString, чтобы определить, на какую страницу перенаправлять. Насколько я помню, если вы перейдете непосредственно на страницу входа, значение returnUrl по умолчанию будет равно «/», что будет вашей домашней страницей. Это то, за чем вы следите?
4. Но я установил для начальной страницы моего приложения значение «Login.aspx», поскольку все страницы защищены, кроме «login.aspx», но после отправки браузер переходит к default.aspx (на самом деле у меня Default.aspx).
5. Имеет смысл. Начальная страница — это настройка Visual Studio для отладки приложения. Он отличается от страницы по умолчанию, настроенной на веб-сервере. Веб-сервер по умолчанию настроен на интерпретацию «/» как «Default.aspx».
Ответ №2:
Внутри вашего метода loginButton_click, после проверки вашего пользователя, вы можете просто использовать
FormsAuthentication.RedirectFromLoginPage
Смотрите здесь для получения дополнительной информации и примера . http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx