Как работает модуль аутентификации ASP.NET? - PullRequest
0 голосов
/ 18 апреля 2011

Я не могу дать понять, как работает аутентификация 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>

Что означают здесь «пользователи»?

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

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Код состояния HTTP 401.2 соответствует «Не настроен метод аутентификации».Мне нужно больше информации для подтверждения.Если бы мне пришлось угадывать, я бы сказал, что вам не хватает тега <<a href="http://msdn.microsoft.com/en-us/library/1d3t3c61.aspx" rel="nofollow"> forms > в теге <<a href="http://msdn.microsoft.com/en-us/library/532aee0e.aspx" rel="nofollow"> authentication >.

Если вы еще этого не нашлиВ статье, вы можете попробовать эту ссылку, которая говорит о том, как полностью настроить проверку подлинности формы - http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx

означает, что

<allow users="*"/> 

разрешить всем пользователям.По сути, он инструктирует ASP.NET разрешить всем пользователям (прошедшим проверку подлинности или без проверки подлинности) доступ к random_code_img.aspx

BTW:

<deny users="?"/>  

означает, что не разрешать пользователям, не прошедшим проверку.

Надеюсь, это поможет.

0 голосов
/ 18 апреля 2011

Внутри вашего метода loginButton_click после проверки вашего пользователя вы можете просто использовать

FormsAuthentication.RedirectFromLoginPage

См. Здесь для получения дополнительной информации и примера.http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx

...