0

我正在使用带有 LoggedIn 事件的 ASP.NET 4.0 登录控件

protected void Login_LoggedIn(object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated) // return false (why?)
    {
        string name = HttpContext.Current.User.Identity.Name;
    }
    Response.Redirect("Default.aspx");
}

该事件正在被触发,我正在用调试器捕捉它。我遇到的问题是由于某种原因User.Identity.IsAuthenticated返回false

函数结束并重定向到 后Default.aspx,如果我添加User.Identity.IsAuthenticated,它会返回true

怎么来的?

4

2 回答 2

0

您需要记住使用FormsAuthentication.SetCookie保存下一个 HTTP 请求的身份验证。

来自 MSDN:

为提供的用户名创建一个身份验证票证,并将其添加到响应的 cookie 集合中,如果您使用的是无 cookie 身份验证,则将其添加到 URL。

于 2012-08-28T10:22:06.563 回答
0

这是默认行为,请查看此事件的 MSDN 页面:

取自“备注”部分[重点是我的]:

在身份验证提供程序检查用户的凭据并且身份验证 cookie 排队等待在下一个响应中发送到浏览器之后引发 LoggedIn 事件。在用户通过身份验证后,使用 LoggedIn 事件提供额外的处理,例如访问每个用户的数据。

这就是您User.Identity.IsAuthenticated=true在被重定向到 时看到的原因default.aspx

于 2012-08-28T10:26:15.900 回答