在Forms身份验证中获取当前的MembershipUser

时间:2011-06-13 10:23:15

标签: c# asp.net c#-4.0

我想从我的页面获取当前的MembershipUser

Membership.GetUser();

返回null。

无法使用

HttpContext.Current.User.Identity.Name

因为它根据我的配置返回我的个人资料名称以获取用户名。

如何获取当前用户?

更新:会员提供商为SqlMembershipProvider

3 个答案:

答案 0 :(得分:10)

  1. Membership.GetUser()仅适用于经过身份验证的用户。否则,它将返回null。要验证您是否正在处理经过身份验证的请求,请在页面上调用“User.Identity.IsAuthenticated”。如果您有经过身份验证的请求,但Membership.GetUser()仍然返回null,则表示在Membership数据源中找不到与经过身份验证的用户关联的用户名。使用“User.Identity.Name”验证经过身份验证的用户的用户名。

  2. 如果你正在调用其中一个Membership.GetUser()重载,它接受用户名并返回null,那么该用户在Membership数据源中不存在(或者我们有一个bug)。轻松验证这一点的一种方法是尝试使用相同用户名的Membership.CreateUser()。如果由于用户重复而没有引发错误,那么您就知道该用户从未存在过。

  3. Membership.GetUser()应该从未为匿名用户工作过。在处理此案件时,会员资格没有内置支持。

答案 1 :(得分:0)

您是否尝试过Page.User.Identity.Name

答案 2 :(得分:0)

Membership.GetUser();

完全有效,您可能在这里遇到的是配置问题,请仔细检查您的web.config并确保一切正确,尤其是 Forms 部分。