Asp.net mvc 控制器中的用户为空,但视图中的用户具有值
我使用Asp.net mvc 控制器中的用户为空,但视图中的用户具有值,asp.net-mvc,authentication,identity,Asp.net Mvc,Authentication,Identity,我使用ASP.NET MVC 5和Identity进行身份验证,我的问题在于以下代码: User.Identity.IsAuthenticated User为空,但我在视图中使用了上面的代码,比如belowe,它的工作很好,用户有价值 @if (User.Identity.IsAuthenticated) {...} 什么事? 要做到这一点,我在谷歌上搜索,并找到一种方法 protected override void Initialize(System.Web.
ASP.NET MVC 5
和Identity
进行身份验证
,我的问题在于以下代码:
User.Identity.IsAuthenticated
User
为空,但我在视图中使用了上面的代码,比如belowe,它的工作很好,用户有价值
@if (User.Identity.IsAuthenticated)
{...}
什么事?
要做到这一点,我在谷歌上搜索,并找到一种方法
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
我怀疑您试图在控制器的构造函数中调用此方法。此构造函数在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)
{
...
}
}
您在哪里使用此代码?如果您试图在控制器的构造函数中执行此操作,那么它将为null,因为这太早了。我在BaseController和其他控制器继承中使用了
Initialize
,在Initialize
方法中,您应该能够访问HttpContext。您能告诉我们您试图实现什么吗?也许我们可以建议一种不同的方法来完成您正在尝试的操作