Как узнать об успешном входе в систему при работе с шаблоном веб-приложения asp.net

Я создал новое веб-приложение asp.net, используя шаблон, который есть в Visual Studio. Этот тип проекта создает готовый вход в систему, который я настроил с помощью команды aspnet_regsql для работы с моей базой данных.

Теперь, когда кто-то входит в приложение, мне нужно знать, был ли вход в систему успешным, поэтому я могу сохранить в Session[''] имя пользователя, среди прочего.

Я ожидал найти метод, который возвращает true или false, но вместо этого в Login.aspx.cs есть только метод Page_Load, и я не понимаю, как он работает.

Я попытался связать метод onclick, который получает значение элемента управления UserName, но очевидно, что он работает только тогда, когда пользователь входит в систему в первый раз, если пользователь проверяет «Запомнить меня в следующий раз», это не сработает.


person Aikanáro    schedule 31.07.2012    source источник


Ответы (2)


Событие AuthenticateRequest возникает, когда пользователь был аутентифицирован, однако в этом случае у вас еще нет доступа к SessionState. Следовательно, чтобы сохранить Session, вы должны рассмотреть PostAcquireRequestState событие приложения.

Обзор жизненного цикла приложения ASP.NET для IIS 7.0

Обзор жизненного цикла приложения ASP.NET для IIS 5.0 и 6.0

Для дополнительной информации:

Пример:

В global.asax

    void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        if (Context.Session != null)
        {
            Application.Lock();
            Session["user"] = User.Identity.Name;
            Application.UnLock();
        }
    }

Кроме того, если вы используете LoginControl, вы можете обрабатывать событие LoggedIn:

ASPX

    <asp:Login runat="server" ID="login" DestinationPageUrl="~/Default.aspx" 
        FailureAction="RedirectToLoginPage"
        onloggedin="login_LoggedIn" ...>
     ....

Код ASPX позади

protected void login_LoggedIn(object sender, EventArgs e)
{
    // set the Session here
}
person Jupaol    schedule 31.07.2012

В шаблоне веб-проекта aspx используется элемент управления asp:Login, который выполняет аутентификацию за вас.

Если вам нужно настроить вход в систему, вы можете ввести собственное имя пользователя / пароль, а затем напрямую вызвать API членства, например

if (Membership.ValidateUser(username, password))
{
    FormsAuthentication.SetAuthCookie(username, rememberMe);
    // Do your custom stuff here

...

Вы также можете проверить, аутентифицирован ли пользователь, используя

UserPrincipal.Identity.IsAuthenticated

Дополнительные сведения см. В MSDN.

person StuartLC    schedule 31.07.2012