用户在控制器中为空,但在View中有值

时间:2016-04-02 07:42:48

标签: asp.net-mvc authentication identity

我对ASP.NET MVC 5使用IdentityAuthentication,我的问题在于以下代码:

User.Identity.IsAuthenticated

User是Null,但我在View Like下面使用了Above代码,它的工作正常,用户有价值。

  @if (User.Identity.IsAuthenticated)
            {...}

什么事?

要做到这一点,我在谷歌搜索并找到一种方法

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);
    }

1 个答案:

答案 0 :(得分:8)

我怀疑你试图在控制器的构造函数中调用此方法。在HTTP请求执行管道中过早地调用此构造函数,并且HttpContext在那里不可用。您可以在Initialize方法中访问HttpContext:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    base.Initialize(requestContext);

    // Now you can access the HttpContext and User
    if (User.Identity.IsAuthenticated)
    {
        ...
    }
}