Mri*_*Raj 1 c# asp.net back-button browser-history
我的asp .net应用程序面临一个问题,即注销用户使用浏览器的后退按钮重新访问以前访问过的页面.用户无法执行任何服务器端事件,但如果不允许用户查看此页面会更好.我搜索了一个解决方案来阻止这个,但大多数解决方案包括在页面内编写代码,必须不像这样重新访问.
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
string sb;
sb = "<script language=javascript>\n";
sb += "window.history.forward(1);\n";
sb += "\n</script>";
ClientScript.RegisterClientScriptBlock(Page.GetType(), "clientScript", sb);
}
Run Code Online (Sandbox Code Playgroud)
这意味着我必须在登录用户可以访问的每个页面中编写代码.有没有更好的方法来处理这个问题?我期待一个优化的解决方案,我不必在每个页面编写代码.将非常感谢帮助.
根据您的问题,我了解您只想阻止使用"后退"按钮(查看以前的数据),但是您的服务器端正常工作并且不允许已注销的用户执行任何任务...
如果不是这种情况,您还应该在服务器端添加验证,以确保注销用户(应该被视为从未登录过的用户)无法执行任何需要权限的操作......!
回到你的问题 - 你应该在浏览器中禁用缓存.
在CodeBehind中:
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Run Code Online (Sandbox Code Playgroud)
您还可以在ASPX页面中使用META标记:
<META Http-Equiv="Pragma" Content="no-cache">
<META Http-Equiv="Expires" Content="0">
<META Http-Equiv="Cache-Control" Content="no-cache">
Run Code Online (Sandbox Code Playgroud)
这将告诉浏览器该页面不应该被缓存,也不会通过Back
按钮重新显示
如果这还不够,您还可以使用JavaScript来清除历史记录,这里有一个例子
编辑:
如果您希望此代码只出现一次,您可以创建一个具有此逻辑的BasePage
(源自Page
).然后,您想要此逻辑的任何页面都应该来自BasePage
而不是常规System.Web.UI.Page
归档时间: |
|
查看次数: |
5512 次 |
最近记录: |