我对为什么 HttpContext.Current.User.Identity.IsAuthenticated 在登录控件的 LoggedIn 事件中返回 false 感到生气?
我输入了正确的用户名和密码,因此我进入了登录事件,但 IsAuthenticated 是错误的!
我对为什么 HttpContext.Current.User.Identity.IsAuthenticated 在登录控件的 LoggedIn 事件中返回 false 感到生气?
我输入了正确的用户名和密码,因此我进入了登录事件,但 IsAuthenticated 是错误的!
这是因为自从用户登录后页面还没有回传。整个 User 对象还没有填写,这是一个已知的行为。
请参阅这篇内容丰富的博客文章:
http://forums.asp.net/t/982749.aspx
上述链接也归功于此相关的 SO QA: Get UserID from ASP.Net Login control LoggedIn event
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;
}