2

我对为什么 HttpContext.Current.User.Identity.IsAuthenticated 在登录控件的 LoggedIn 事件中返回 false 感到生气?

我输入了正确的用户名和密码,因此我进入了登录事件,但 IsAuthenticated 是错误的!

4

2 回答 2

4

这是因为自从用户登录后页面还没有回传。整个 User 对象还没有填写,这是一个已知的行为。

请参阅这篇内容丰富的博客文章:

http://forums.asp.net/t/982749.aspx

上述链接也归功于此相关的 SO QA: Get UserID from ASP.Net Login control LoggedIn event

于 2012-10-31T19:38:41.030 回答
2

Application_AuthenticateRequest发生在页面生命周期的早期阶段。

如果您遇到LoggedIn事件,您可以假设用户已经通过身份验证。

如果你想要一个登录用户的用户名,你可以像这样得到它 -

protected void LoginUser_LoggedIn(object sender, EventArgs e)
{
    var usernameTextBox = (TextBox)LoginUser.FindControl("UserName");
    string username = usernameTextBox.Text;

    MembershipUser user = Membership.GetUser(username);
    Guid userId = (Guid)user.ProviderUserKey;
}
于 2012-10-31T19:52:49.910 回答