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