gpt4 book ai didi

javascript - 如何仅在 mvc3.net 中注销后禁用浏览器后退按钮

转载 作者:可可西里 更新时间:2023-11-01 02:50:20 26 4
gpt4 key购买 nike

我正在使用 FormsAuthentication 进行用户登录。用户成功注销后我遇到问题后退按钮是浏览器允许用户查看页面。我尝试使用 javascript

 <script type = "text/javascript" >
function preventBack() { window.history.forward(1); }
setTimeout("preventBack()", 0);
window.onunload = function () { null };
</script>

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

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 最好的办法是设置适当的缓存 header ,这样浏览器就不会通过适当应用的 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 - 如何仅在 mvc3.net 中注销后禁用浏览器后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com