网站因需求,需要实现当用户在浏览页面时,无法使用回退按钮, 首先实现了单点登陆功能,
但禁用用户使用回退问题还没有解决, 想了一个方法, 请大家指正下, 首先在服务器端给 用户发页面时, 把html格式的页面同时保存下来,存在内存或者硬盘中, 然后会经过一个过滤器,在给用户的页面中附带了一个识别码,在用户的下一次请求时, 会将这个识别码也同时传回来,在经过过滤器时, 如果这个识别码与服务器中的相同, 就认为是最新的请求, 可以放行, 如果不相同, 就可以认为是用户回退后再请求的, 这时就将保存的上次页面再次发给用户.
现在有两个问题无法解决(是我无法解决), 一是怎样获取这个html格式的页面, 是截获tomcat的
输出流还是将有其他的什么方法? 二是整个项目已经完成的差不多了, 没有办法去挨个改url, 问下url改写
能解决附加识别码并在用户再次请求自动添加识别码这个功能吗?? 感到想的是不是太复杂了, 想了半天了,总没有什么好思路.
但禁用用户使用回退问题还没有解决, 想了一个方法, 请大家指正下, 首先在服务器端给 用户发页面时, 把html格式的页面同时保存下来,存在内存或者硬盘中, 然后会经过一个过滤器,在给用户的页面中附带了一个识别码,在用户的下一次请求时, 会将这个识别码也同时传回来,在经过过滤器时, 如果这个识别码与服务器中的相同, 就认为是最新的请求, 可以放行, 如果不相同, 就可以认为是用户回退后再请求的, 这时就将保存的上次页面再次发给用户.
现在有两个问题无法解决(是我无法解决), 一是怎样获取这个html格式的页面, 是截获tomcat的
输出流还是将有其他的什么方法? 二是整个项目已经完成的差不多了, 没有办法去挨个改url, 问下url改写
能解决附加识别码并在用户再次请求自动添加识别码这个功能吗?? 感到想的是不是太复杂了, 想了半天了,总没有什么好思路.
楼主看看。
试试看
//禁止刷新,回退
function onKeyDown()
{
if ( (event.altKey) || ((event.keyCode == 8) &&
(event.srcElement.type != "text" &&
event.srcElement.type != "textarea" &&
event.srcElement.type != "password")) ||
((event.ctrlKey) && ((event.keyCode == 78) || (event.keyCode == 82)) ) ||
(event.keyCode == 116) ) {
event.keyCode = 0;
event.returnValue = false;
}
}
document.onkeydown = onKeyDown;
function stop(){ //这个是禁用鼠标右键
return false;
}
document.oncontextmenu=stop;
</script>
感觉和你描述的差不多
想把页面定位到他最后的有效页面, 而不是给个警告页面. 所以才要保留个页面.
public Object invoke(MethodInvocation arg0) throws Throwable {
Object[] args = arg0.getArguments();// action方法的参数
HttpServletRequest request = (HttpServletRequest) args[2];
String uri = request.getServletPath();// epg/user.do
String param = request.getQueryString(); // 参数
if (CommonsUtil.isExistMethod(checkMethodPrefixs, param))// 存在要检测的方法
if (!TokenProcessor.getInstance().isTokenValid(request))// 重复提交
{
logger.info("检测到重复提交URL: " + uri + "?" + param);
return new ActionForward(uri + "?m=list");
} else {// 正常提交
ActionForward forward = (ActionForward) arg0.proceed();
if (!Arrays.asList(notCleanTokenForwards).contains(
forward.getName()))// 执行完Action,且不是转向错误页面,则更换本次操作的Token
TokenProcessor.getInstance().saveToken(request);
return forward;
}
Object object = arg0.proceed();
return object;
}
试试看
Ajax 更新页面内容,地址栏永远不变,也就不存在什么后退了。例子去看 dojo 的演示。OVER
<head>
<meta http-equiv=”pragma” content=”no-cache”>
<meta http-equiv=”cache-control” content=”no-cache”>
<meta http-equiv=”expires” content=”0”>
</head>你在不允许返回的那个页面写上:
<script>
history.go(1);
</script>不知道搂主为什么要干预用户的操作。
如果为了保密,就每次请求页面时,在服务器端验证身份,不必禁止后退按钮。
不进行缓存
htm网页
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<meta http-equiv="expires" content="wed, 26 feb 1997 08:21:57 gmt">
或者<meta http-equiv="expires" content="0">