javascript – 如何在退出mvc3.net后禁用浏览器后退按钮

前端之家收集整理的这篇文章主要介绍了javascript – 如何在退出mvc3.net后禁用浏览器后退按钮前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为userlogin使用FormsAuthentication.
用户注销成功后我遇到问题,后退按钮是浏览器允许用户查看页面.
我试过使用 javascript
<script type = "text/javascript" >
        function preventBack() { window.history.forward(1); }
        setTimeout("preventBack()",0);
        window.onunload = function () { null };
</script>

但是后退按钮完全禁用.
它工作bt,我不想在用户登录时禁用后退按钮功能.我希望我的LOGGED IN用户正常使用浏览器返回按钮.但是一旦他选择退出,他就不能通过按Back来看任何内容.
我也试过使用

Session.Abandon();
 Response.Cache.SetCacheability(HttpCacheability.NoCache);
 Response.Cache.SetExpires(DateTime.Now);

但这也不行.我该如何解决

解决方法

您可以在用户注销时清除浏览器历史记录:
var url = window.location.href;
window.history.go(-window.history.length);
window.location.href = url;

然而,这不是特别强大 – 它依赖于javascript,它不会在多个选项卡上工作,也可能只会使用户烦恼. IMO最好的办法是设置适当的缓存头,使得浏览器不会通过适当应用的NoCacheAttribute缓存任何“登录页面

public class NoCacheAttribute : ActionFilterAttribute
{  
  public override void OnResultExecuting(ResultExecutingContext filterContext)
  {
      filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
      filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
      filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
      filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
      filterContext.HttpContext.Response.Cache.SetNoStore();

      base.OnResultExecuting(filterContext);
  }
}

猜你在找的JavaScript相关文章