让我先来描述一下这个情况。一位用户第一次请求一个web页面,web应用弹出登录窗口提示用户登录,用户输入用户名,密码,验证码后服务器进行判断,正确后,返回用户请求的页面。
此时,用户有事需要离开一会儿,担心别人使用自己的账户,为了安全,用户需要退出,这时用户有两种方法保证账号安全,一种是关闭浏览器,一种就是我们程序员需要做的事情了:
用户点击退出,弹出消息框提示用户是否要退出?确定后,后台服务器需要清除此用户对应的seession,这样虽然保证了此用户不能够再次操作页面相应权限的功能(是web项目不同情况而定,如果是MIS管理系统的话,则需要跳转到登录界面。)。但是浏览器的history这会大大影响用户的体验,现在的浏览器默认都是有历史记录的,用户可以点击浏览器左上角的返回键,再次返回到上一个页面(用户们就会想:“这东西安不安全哦?”),如果我们没有处理这一情况,程序员们就会发现一个奇怪的现象,就是你能发挥到退出之前的页面,如果你操作页面,弹出的登录窗口就会内镶到这个历史页面,一层套一层。这就是因为我们在退出之后没有清除上一个页面的历史记录,这个事情就需要交给我们的javascript来做。
下面来直观的表示这一流程:
登录---》验证---》通过[服务器创建一个对应的唯一Session]
退出---》确认---》[服务器清除想对应的Session],浏览器清除上一个页面的历史记录。
比如我们有main.jsp和login.jsp(功能大家看名字就懂得)
我们在main.jsp中点击退出后,跳转到login.jsp。我们需要在login.jsp中写上这么一句简单,但不好找的话
<!-- 清除上一个页面的历史记录 --> <script type="text/javascript" charset="UTF-8"> window.history.forward(1); </script>
上面的后台怎么操作?大家都知道的,就不贴出来了,我用的是Spring3.0框架。如有更好的建议,期待大家提出哦,共同学习。
这是我带的一个XXX管理系统:注*:非商业项目,版权归本项目组所有(部分参考图)遇到了上述情况,已解决。