我正在为userlogin使用FormsAuthentication.
用户注销成功后我遇到问题,后退按钮是浏览器允许用户查看页面.
我试过使用 javascript
用户注销成功后我遇到问题,后退按钮是浏览器允许用户查看页面.
我试过使用 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); } }