代码之家  ›  专栏  ›  技术社区  ›  CodeLikeBeaker

FormsAuthentication Membership.GetUser()空

  •  9
  • CodeLikeBeaker  · 技术社区  · 15 年前

    我正在使用表单身份验证,并具有基本登录页和默认页。

    当我在登录页面上,并呼叫登录时,这个工作非常好。但是,当我仍然在登录页面时, Membership.GetUser() 返回NULL。当我重定向到默认页面时, membership.getuser()成员身份 返回我的用户信息。

    我有没有办法让这个方法在登录页上返回我的用户。我在谷歌上看到过很多类似的问题,只有在你重新定向的时候,它才能工作。

    如果需要进一步的信息,请告诉我。

    下面是一个简单的代码片段,说明我正在使用它来验证是否正在设置信息:

    bool authenticated = User.Identity.IsAuthenticated;
                string username = User.Identity.Name;
    
                MembershipUser user = Membership.GetUser();
    

    我将这段代码放在登录页面和代码隐藏的默认页面上,只有默认页面有值,并显示它在身份验证过程执行后经过了身份验证。

    5 回复  |  直到 9 年前
        1
  •  11
  •   Chris Simpson    15 年前

    这可能是因为您允许匿名用户登录页面。因此,浏览器不需要向该页面发送任何超出必要范围的信息。

        2
  •  13
  •   David    15 年前

    还需要尝试以下代码:

     MembershipUser user = Membership.GetUser(username);
     GenericIdentity identity = new GenericIdentity(user.UserName);
     RolePrincipal principal = new RolePrincipal(identity);
     System.Threading.Thread.CurrentPrincipal = principal;
     HttpContext.Current.User = principal;
    
        3
  •  2
  •   Clay Smith    12 年前

    我也遇到过同样的情况,这就是我在MVC4.NET 4.5上的工作。

    Membership.GetUser(HttpContext.Current.User.Identity.Name)
    
        4
  •  2
  •   Etienne    12 年前

    我有一个类似的问题,问题是我在web配置中缺少authentication method=form。

    <system.web>
        <authentication mode="Forms"/>
        ....
    

    别忘了这一点(我正在把一个旧的遗留站点迁移到aspnet)

        5
  •  0
  •   Simon Hawes    9 年前

    我有这个问题,发现是因为有多个会员提供商,所以不是

    Membership.GetUser()
    

    你可以试试

    Membership.Providers["MyMembershipProvider"].GetUser()
    

    或者更具体地说

    Membership.Providers["MyMembershipProvider"].GetUser(LoginCtrl.UserName, false)