Как работает ASP.NET Работает модуль аутентификации?

#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