asp.net - 如何使用 ASP.NET Web 应用程序模板知道登录何时成功

标签 asp.net templates authentication default web-application-project

我使用 Visual Studio 的模板创建了一个新的 ASP.NET Web 应用程序。此类项目创建一个开箱即用的登录名,我使用 aspnet_regsql 命令配置该登录名以使用我的数据库。

现在,当有人登录应用程序时,我需要知道登录是否成功,因此我可以在 Session[''] 中保存用户名等信息。

我本来希望找到一个返回 true 或 false 的方法,但在 Login.aspx.cs 中只是 Page_Load 方法,我不明白它是如何工作的。

我尝试关联一个 onclick 方法来获取 UserName 控件的值,但显然,这只在用户第一次登录时有效,如果用户选中“下次记住我” “这不会起作用。

最佳答案

AuthenticateRequest当用户通过身份验证时会引发该事件,但是在这种情况下您还没有访问 SessionState 的权限。因此,要保存 Session,您应该考虑 PostAcquireRequestState 应用程序事件。

ASP.NET Application Life Cycle Overview for IIS 7.0

ASP.NET Application Life Cycle Overview for IIS 5.0 and 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
}

关于asp.net - 如何使用 ASP.NET Web 应用程序模板知道登录何时成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733153/

相关文章:

ASP.net 表单例份验证 - 管理员杀死单个用户的 session

c++ - 模板类方法不会导致错误——这是标准的一部分吗?

file - IntelliJ 文件模板光标位置

android - 如何使用 NfcA 类读取 Mifare Classic 标签?

java - 针对 Active Directory 的 LDAP 身份验证可接受的 SECURITY_PRINCIPAL 格式是什么?

.net - 以编程方式设置页面输出缓存 VaryByCustom 值

c# - 如何将 SQL 日期结果转换为英国格式 (dd/mm/yyyy)

c# - 什么时候在 DbContext 上执行查询

c# - WPF DataGrid -> 为 CellEditingTemplate 显示的图标

c# - 如何获取登录后默认页面的userInformation?