.net 是否在MVC3中签入身份验证之前显示主页?

.net 是否在MVC3中签入身份验证之前显示主页?,.net,asp.net-mvc-3,authentication,asp.net-membership,.net,Asp.net Mvc 3,Authentication,Asp.net Membership,我们正在使用一个客户成员身份提供商,它需要转到一个web服务来验证用户。在web.config中设置表单身份验证,然后该表单将转到所述提供者。身份验证完成后,我们设置一个自定义cookie来存储客户名称、用户全名等 我们的问题是:当您重新访问站点时(无论是在我们的开发机器上还是在visual studio中),会话超时后,您仍然会看到默认主页,尽管用户实际上没有经过身份验证。当您采取不同的操作时,站点会识别出该用户无效,并将您返回到登录页面 我们有一个所有其他控制器都派生自的BaseContro

我们正在使用一个客户成员身份提供商,它需要转到一个web服务来验证用户。在web.config中设置表单身份验证,然后该表单将转到所述提供者。身份验证完成后,我们设置一个自定义cookie来存储客户名称、用户全名等

我们的问题是:当您重新访问站点时(无论是在我们的开发机器上还是在visual studio中),会话超时后,您仍然会看到默认主页,尽管用户实际上没有经过身份验证。当您采取不同的操作时,站点会识别出该用户无效,并将您返回到登录页面

我们有一个所有其他控制器都派生自的BaseController类,并且我们已经将[Authorize]属性添加到重写的Execute方法中,但它似乎不起作用:

[授权] 受保护的覆盖无效执行(System.Web.Routing.RequestContext)


在站点返回登录页面之前显示的这一未经验证的页面是否缺少一些简单的内容?

出于兴趣,如果在
全局.asax中包含类似内容,会发生什么情况

protected void Session_Start(Object sender, EventArgs e)
{
        if (User.Identity.IsAuthenticated)
        {
                FormsAuthentication.SignOut();
                Response.Redirect("~/SessionEnd.aspx");
        }
}

我假设
[Authorize]
也在控制器方法上,是吗?

出于兴趣,如果在
全局.asax中包含类似的内容,会发生什么

protected void Session_Start(Object sender, EventArgs e)
{
        if (User.Identity.IsAuthenticated)
        {
                FormsAuthentication.SignOut();
                Response.Redirect("~/SessionEnd.aspx");
        }
}

我猜
[Authorize]
也在控制器方法上,是吗?

我想到了几件事。 1.你确定cookie在主页显示的同一请求上过期了吗? 2.您是否使用任何输出缓存

  • 此处有疑问,但如果此处缺少某些信息,请将其丢弃: 这是假设您正在会话中使用某些内容(您在上面提到的会话) 如果您所说的会话仅指表单验证,那么这将无济于事(请澄清)
  • 请记住,会话超时和表单身份验证超时是不同的,并且以非常不同的方式处理,因此您必须在本质上保持它们的同步

    在这里查看我的代码:


    表单身份验证超时仅在超过一半时间后更新。会话超时会在每次请求时更新,因此两者很容易失去同步。

    我想到了几件事。 1.你确定cookie在主页显示的同一请求上过期了吗? 2.您是否使用任何输出缓存

  • 此处有疑问,但如果此处缺少某些信息,请将其丢弃: 这是假设您正在会话中使用某些内容(您在上面提到的会话) 如果您所说的会话仅指表单验证,那么这将无济于事(请澄清)
  • 请记住,会话超时和表单身份验证超时是不同的,并且以非常不同的方式处理,因此您必须在本质上保持它们的同步

    在这里查看我的代码:


    表单身份验证超时仅在超过一半时间后更新。会话超时会在每次请求时更新,以便两者很容易失去同步。

    AFAIK,应将
    [Authorize]
    属性添加到控制器类或其操作方法(返回
    ActionResult
    )中。我从未听说过用
    [Authorize]
    标记
    Execute()
    方法。这可能是问题吗?好的,应该将
    [Authorize]
    属性添加到控制器类或其操作方法(返回
    ActionResult
    )中。我从未听说过用
    [Authorize]
    标记
    Execute()
    方法。这可能是问题吗?谢谢亚当。我将研究会话和身份验证票证的强制同步。谢谢Adam。我将研究会话和身份验证票证的强制同步。