我使用asp:Login 控件,用户可以正常登录,但是在LoggedIn 控件的LoggedIn 事件中检查用户配置文件信息时,配置文件对象中的所有字段都是空的。此外,User.Identity.IsAuthenticated 始终返回 false。
但是,在导航到另一个页面时,所有这些问题都解决了。
为什么 User.Identity.IsAuthenticated 返回 false,即使用户正确登录?而且,有没有办法在登录控件的 LoggedIn 事件中获取用户的个人资料信息?
我使用asp:Login 控件,用户可以正常登录,但是在LoggedIn 控件的LoggedIn 事件中检查用户配置文件信息时,配置文件对象中的所有字段都是空的。此外,User.Identity.IsAuthenticated 始终返回 false。
但是,在导航到另一个页面时,所有这些问题都解决了。
为什么 User.Identity.IsAuthenticated 返回 false,即使用户正确登录?而且,有没有办法在登录控件的 LoggedIn 事件中获取用户的个人资料信息?
登录后,表单必须重定向到下一页以填充用户主体信息(页面/上下文的用户属性)。这就是为什么提到使用控件的 UserName 的原因。
你能等到重定向之后吗?您需要直接访问吗? Login1.UserName应该管用; 在此处放置一个调试器并确保已填充该值。
你也可以试试:HttpContext.Current.Profile.GetProfile( ... )
在 LoggedIn 事件中,用户和配置文件身份尚未更新。试试这个:
要访问用户:
MembershipUser aUser = Membership.GetUser(Login1.UserName);
// work with aUser ...
要访问配置文件:
ProfileCommon aProfile = Profile.GetProfile(Login1.UserName);
// work with the member fields in aProfile ...
(Login1 是您的登录控件。)