什么时候User.Identity.IsAuthenticated设置为true?

3
在我的login.aspx页面中,我使用了<asp:Login>控件,如果User.Identity.IsAuthenticated= true,则需要分配一些值。
正如在这里所提到的,当用户提交他或她的登录信息时,Login控件首先引发LoggingIn事件,然后是Authenticate事件,最后是LoggedIn事件。
因此,我按以下方式检查了这个值:
protected void Login_LoggedIn(object sender, EventArgs e)
{
    int x = 0;
    if (User.Identity.IsAuthenticated)
        x = 5;
 }

但这个值始终为false。我的问题如下:

  1. 在哪个事件中,这个值会改变为true?
  2. 我做错了什么?
1个回答

5
用户输入凭据并点击登录按钮。发生回发。
1.传入请求进入ASP.NET管道。
2.Application_Authenticate事件触发。此时,ASP.NET运行时不知道用户是谁,所以User.Identity.IsAuthenticated = false。
3.登录页面的生命周期开始,
4.登录控件的Authenticate事件触发,并创建了一个表单身份验证票证,因为您将e.Authenticated设置为true。
5.登录控件的LoggedIn事件触发。此时,我们仍然在同一个请求上,因此User.Identity.IsAuthenticated仍然为false!
更多信息,请阅读此链接: http://forums.asp.net/t/1177741.aspx?User+Identity+IsAuthenticated+remains+false+why+

+1 我想强调的是,至少你可以从控件中获取用户名(例如 "Login1.UserName"),并在页面关闭并返回 ReturnUrl 之前进行进一步的基于用户的工作。 - secretwep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接