在SignOut()之后使用浏览器的后退按钮允许访问安全页面(ASP.NET MVC)

mar*_*123 5 asp.net authentication asp.net-mvc

我有一个MVC应用程序,使用[授权]来保护私人位.当我选择SignOut()URL时,它会告诉我,但如果我点击浏览器上的后退按钮,它就会转到安全页面,甚至让我使用该表单.行动发生,然后它显示我已退出.问题是它执行安全操作(在我的数据库中插入一行).然后我可以再次使用后退按钮并全部完成.如果我在注销后使用后退按钮并点击浏览器刷新它确实显示我已注销并拒绝访问安全页面.

我错过了重要的事吗?看起来这可能是一个非常大的安全问题.

public ActionResult LogOff(string ReturnUrl)
{

    FormsAuth.SignOut();

    if (!String.IsNullOrEmpty(ReturnUrl))
    {
        return Redirect(ReturnUrl);
    }
    else
    {

    return RedirectToAction("Index", "Page");
    }
}
Run Code Online (Sandbox Code Playgroud)

ste*_*tej 5

我认为问题是浏览器缓存页面.这就是为什么单击后退按钮后它不会重新加载页面的原因.如果在标题中指定不应缓存页面,则应在按下后退按钮后重新加载页面.然后用户被拒绝.

但是,在某些情况下,让它工作可能会很棘手.有关详细信息,请参阅此缓存教程.