Request.IsAuthenticated返回false,除非页面刷新

时间:2014-01-29 19:50:28

标签: c# asp.net-mvc asp.net-mvc-5

作为我的网页用户登录/注销过程的一部分(使用标准MVC身份验证模块),我在我的视图中有以下内容:

if (Request.IsAuthenticated)
{
    //logoff
}
else
{
    //logon
}

但是,当我的用户成功登录并返回该页面(查看)时,Request.IsAuthentgicated获取者为false,除非我刷新页面然后它等于true并且按预期工作。

任何人都可以解释为什么这样以及如何在不重新加载页面的情况下修复它?

1 个答案:

答案 0 :(得分:2)

对于实际执行登录的请求,Request.IsAuthenticated属性为false;毕竟,用户在请求时未经过身份验证。

所以这就是你所期望的,只是强调需要在登录过程中稍作改动。而不是在对登录的响应中呈现视图,而是执行重定向(确切地说ASP.NET Web窗体是如何做的)... RedirectResult而不是ViewResult

因此:

  1. 获取主页
    • Request.IsAuthenticated == false
  2. GET登录
    • Request.IsAuthenticated == false
  3. POST登录(实际验证)
    • Request.IsAuthenticated == false
    • 响应包含auth cookie并且是重定向到主页(HTTP 302)
  4. 获取主页
    • 请求现在有auth cookie
    • Request.IsAuthenticated == true
相关问题