我使用 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/