“后退”按钮将在注销后返回到经过身份验证的页面

本文关键字:经过 身份验证 返回 后退 按钮 注销 | 更新日期: 2023-09-27 17:58:38

当用户在注销后点击"返回"按钮时,他们会得到"文档过期"。但是,当用户点击此消息时

单击"重试"从网站重新请求文档

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

“后退”按钮将在注销后返回到经过身份验证的页面

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

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();
}

如果你的网站大部分都是安全的,你也可以对整个控制器进行注释或全局注册。

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

由于您谈论的是POST请求(因为它会给您过期的消息),您的控制器/操作中可能缺少[Authorize]属性,该属性将允许任何未经身份验证的用户访问它,您检查过吗?