在Java web项目中防止用户注销后使用浏览器中的“后退”按钮返回注销前页面
一背景
公司安全整改,
要求:系统中对于关键业务操作应确保使用浏览器“后退”功能无法回到上一步操作界面。
提供:凭证提供所有被检查系统关键业务操作后回退视频,视频显示关键业务操作后,使用浏览器的“后退”,无法回到上一步操作界面(例如退出系统、审批等)。
我负责的zbj系统点击退出系统后,在浏览器点击“后退”仍会通过浏览器的缓存,访问到系统内部。
二、实现方式
通常在Java web项目中用户注销是这样实现的:
session().setAttribute("currentUser", null);
或者
session.removeAttribute("currentUser");
</pre></p><p>或者<pre name="code" class="java">session.invalidate();
然后重定向到登录页面。
但这样做的话,在用户注销跳转到登录页面后,如果用户点了浏览器的“后退”按钮,就可以返回到注销前的页面,尽管session已经清空。
这是因为浏览器的后退是使用了本地缓存的。
下面这个办法可以禁止浏览器使用缓存,从而防止这种情况的出现。
新建包com.example.filter,在其中新建类
package com.asd.common.utils; import java.io.IOException; import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse; /**
* create by MrZs on 2020/7/9
*/
public class NoCacheFilter implements Filter{ @Override
public void destroy() {
// TODO Auto-generated method stub } @Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException { HttpServletResponse hsr = (HttpServletResponse) res;
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hsr.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(req, res); } @Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub } }
doFilter方法中的setHeader就是告诉浏览器不要使用本地缓存。
然后在web.xml中配置
<filter>
<filter-name>noCacheFilter</filter-name>
<filter-class>com.asd.common.utils.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>noCacheFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
其中*.jsp表示对任意jsp页面都使用noCachaFilter进行过滤,你当然可以根据自己的情况灵活运用,只在你不希望被缓存的页面使用。
当然不能忘记在页面中加上登录验证。
原文链接:https://blog.csdn.net/s_targaze_r/java/article/details/42432795
在Java web项目中防止用户注销后使用浏览器中的“后退”按钮返回注销前页面的更多相关文章
- 为什么eclipse中启动tomcat后,浏览器中出现404?
问题描述: tomcat压缩包加压后,启动lib文件夹下面的startup.bat,在浏览器中输入http://localhost:8080/后出现熟悉的界面. 但是在eclipse中,jsp可以正常 ...
- idea 中利用maven创建java web 项目
转自:http://www.linuxidc.com/Linux/2014-04/99687.htm 本文主要使用图解介绍了使用IntelliJ IDEA 12创建Maven管理的Java Web项目 ...
- 理解java Web项目中的路径问题
本文以项目部署在tomcat服务器为例,其他相信也是一样的. 先说明请求页面的写法,在web中,页面路径主要写的有以下几种 1.请求重定向 2.浏览器的请求被服务器请求到新页面(我称为“转发”) 3. ...
- java web 项目中 简单定时器实现 Timer
java web 项目中 简单定时器实现 Timer 标签: Java定时器 2016-01-14 17:28 7070人阅读 评论(0) 收藏 举报 分类: JAVA(24) 版权声明:本文为博 ...
- Java Web项目中连接Access数据库的配置方法
本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...
- java web项目中打开资源文件中文乱码
1 java web项目中经常使用多模块管理.在某一个模块中添加了一些资源文件.但不是启动项目.有时候需要在程序中读取资源文件内容,打包后放到容器中就不能正常运行了.需要将所有资源文件放到启动项目的 ...
- 26.使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及时显示修改后的页面
转自:https://blog.csdn.net/yuxxz/article/details/51318908 使用IntelliJ IDEA开发Java Web项目时,修改了JSP后刷新浏览器无法及 ...
- idea中的java web项目(添加jar包介绍)和java maven web项目目录结构
java web项目 web项目下web根目录名称是可以更改的 idea中新建java web项目,默认src为Sources Root,当然也可以手动改,在Sources Root下右键只能新建Pa ...
- JAVA WEB项目中各种路径的获取
JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报 分类: JAVA开发(41) 1.可以在s ...
随机推荐
- 四、SSL虚拟证书
沿用练习三,配置基于加密网站的虚拟主机,实现以下目标: 域名为www.c.com 该站点通过https访问 通过私钥.证书对该站点所有数据加密 4.2 方案 源码安装Nginx时必须使用--with- ...
- UF_UI 界面相关
Open C uc1600uc1601uc1603 uc1605uc1607uc1608uc1609uc1613 获取用户输入的字符串uc1615uc1616uc1617uc1618uc163 ...
- 理解Spring:IOC的原理及手动实现
Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架.也是几乎所有Java工作者必须要掌握的框架之一,其优秀的设计思想以及其代码实现上的艺术也是我们需要掌握的. ...
- WEB安全新玩法 [4] 防护邮箱密码重置漏洞
大部分具有账号系统的应用都会提供重置用户登录密码的功能,常见方式之一是:用户输入自己的邮箱地址或手机号,应用向这个邮箱或手机号发送验证码,用户将收到的验证码输入应用中即可完成密码重置.这一过程容易因设 ...
- Vue(10)表单输入绑定v-model
v-model v-model指定可以实现表单值与属性的双向绑定.即表单元素中更改了值会自动的更新属性中的值,属性中的值更新了会自动更新表单中的值 绑定的属性和事件 v-model在内部为不同的输入元 ...
- python读取csv文件绘制气温图,x轴为日期,并填充颜色
- CentOS7详细安装教程(图文)
CentOS7安装过程:(图文详解) 为了做实验,装台Linux的虚拟机,手上有这个7的ISO文件就懒得去下载8的了. 0X01.虚拟机配置 0X02.CentOS7系统配置安装 分别创建/boot区 ...
- Linux中date的用法
一.命令格式:date [参数]... [+格式]二.命令功能:date 可以用来显示或设定系统的日期与时间.三.命令格式:%H 小时(以00-23来表示). %I 小时(以01-12来表示). %K ...
- UI自动化学习笔记- Selenium元素定位及元素操作
一.元素定位 1. 如何进行元素定位? 元素定位就是通过元素的信息或元素层级结构来定位元素的 2.定位工具 浏览器开发者工具 3.元素定位方式 Selenium提供了八种定位元素方式 id name ...
- 整理!企业选择好用的CRM系统的要点(上)
随着市场经济的发展,对任何行业的企业来说,客户都是非常重要的一个部分.CRM系统帮助企业做到以客户为中心,它可以根据客户的具体要求进行跟进和反馈,在很大程度上提高公司的客户服务水平和客户满意度,进而提 ...