在我的login.aspx页面中,我使用<asp:Login>
控件,如果User.Identity.IsAuthenticated = true,我需要指定一些值。
如here中所述,当用户提交他或她的登录信息时,Login控件首先引发LoggingIn事件,然后引发Authenticate事件,最后引发LoggedIn事件。
所以我按如下方式检查了这个值:
protected void Login_LoggedIn(object sender, EventArgs e)
{
int x = 0;
if (User.Identity.IsAuthenticated)
x = 5;
}
但此值始终为 false 。我的问题如下:
答案 0 :(得分:5)
用户输入凭据并单击“登录”按钮。发生回发。
1.传入的请求进入ASP.NET管道。
2. Application_Authenticate事件触发。此时,ASP.NET运行时不知道用户是谁,因此User.Identity.IsAuthenticated = false
3.登录页面的生命周期,
4.启动Login控件的Authenticate事件并创建表单身份验证票证,因为您将e.Authenticated设置为true。
5.登录控件的LoggedIn事件触发。此时,我们仍然处于相同的请求,因此User.Identity.IsAuthenticated仍然是假的!
更多信息,请阅读此链接: http://forums.asp.net/t/1177741.aspx?User+Identity+IsAuthenticated+remains+false+why+