用户配置文件对象是空的,即使用户正确登录?

时间:2010-04-01 16:54:43

标签: asp.net asp.net-profiles login-control

我使用asp:登录控件,用户可以正常登录,但在Login控件的LoggedIn事件中检查用户个人资料信息时,Profile对象中的所有字段都是空的。 此外,User.Identity.IsAuthenticated始终返回false。

但是,导航到另一个页面时,所有这些问题都得到了解决。

为什么User.Identity.IsAuthenticated返回false,即使用户正确登录? 并且,有没有办法在登录控件的LoggedIn事件中获取用户的个人资料信息?

2 个答案:

答案 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是您的登录控件。)