注销后,后退按钮会将您带回到经过身份验证的页面

时间:2013-02-08 23:23:51

标签: c# asp.net-mvc

当用户在注销后点击后退按钮时,他们会获得文档已过期。但是,当用户点击此消息时

  

点击再试一次,从网站上重新申请该文件,

在浏览器中,他们可以再次访问经过身份验证的页面。

2 个答案:

答案 0 :(得分:2)

这是因为页面被缓存了。对于所有安全请求,您需要手动终止缓存。你可以这样做:

public class SecurePageAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();
    }
}

然后您可以在控制器中使用它,如下所示:

[SecurePage]
public ActionResult Index() {
    return View();
}

如果您的大部分网站都是安全的,您还可以注释整个控制器或在全球注册。

答案 1 :(得分:1)

对于GET请求,您希望他们仍然可以在“返回”上看到经过身份验证的页面,但无法与其进行交互(假设您使用POST进行操作)。

由于您正在讨论POST请求(因为它正在为您提供过期消息),您可能会错过控制器/操作中的[Authorize]属性,这将允许任何未经身份验证的用户访问你看过这个吗?