spring 过滤器- 过滤登陆请求路径(过滤静态资源跳转到登陆页面)
public class LoginedFilter implements Filter {
/**
* 排除的地址
*/
private Map<String, Boolean> ignore;
/**
* 排除的后缀
*/
private Map<String, Boolean> ignoreExt;
/**
* <b>功能描述:</b>实现接口,登录验证<br>
* <b>修订记录:</b><br>
*/
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,
ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
String a = request.getRequestURI();
String ss = request.getRequestURI().replaceFirst(request.getContextPath(), "");
String address = request.getRequestURI().replaceFirst(request.getContextPath(), "").substring(1);
String ext = "";
if(address.lastIndexOf(".") > 0) {
ext = address.substring(address.lastIndexOf(".") + 1);
}
if(address.indexOf("/") != -1) {
address = address.substring(address.indexOf("/") + 1, address.length());
}
if(null == this.ignore.get(address) && null == this.ignoreExt.get(ext)) {
HttpSession session = request.getSession();
// 如果session为空,则跳转到登录页面。
// if(null == session.getAttribute("user") || session.isNew()) {
response.sendRedirect(request.getContextPath()+"/index");
return ;
//}
}
arg2.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig config) throws ServletException {
// 初始化排除列表
if(null == this.ignore) {
this.ignore = new HashMap<String, Boolean>();
}
if(null == this.ignoreExt) {
this.ignoreExt = new HashMap<String, Boolean>();
}
// 读取web.xml中的配置列表,装入Map对象,排除内容为Key,Value为true。
String ignoreConfig = config.getInitParameter("ignore");
String[] ignoreConfigArray = ignoreConfig.split(",");
for(String string : ignoreConfigArray) {
this.ignore.put(string.trim(), true);
}
String ignoreExtConfig = config.getInitParameter("ignoreExt");
String[] ignoreExtConfigArray = ignoreExtConfig.split(",");
for(String string : ignoreExtConfigArray) {
this.ignoreExt.put(string.trim(), true);
}
}
@Override
public void destroy() {
// 销毁时清除排除列表
this.ignore.clear();
this.ignore = null;
this.ignoreExt.clear();
this.ignoreExt = null;
}
//下面是web.xml 配置
<filter>
<filter-name>urlfilter</filter-name>
<filter-class>com.payease.chains.order.common.Filter.LoginedFilter</filter-class>
<init-param>
<description>排除过滤的前缀</description>
<param-name>ignore</param-name>
<param-value>index,chains,main,fund,order,fundDetail,orderList,logout,OmsUpload,merchant,upload,main1,main2</param-value>
</init-param>
<init-param>
<description>排除过滤的后缀</description>
<param-name>ignoreExt</param-name>
<param-value>js,css,jpg,gif,png,bmp,jpeg,ico</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>urlfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>urlfilter</filter-name>
<url-pattern>/**</url-pattern>
</filter-mapping>
spring 过滤器- 过滤登陆请求路径(过滤静态资源跳转到登陆页面)的更多相关文章
- nodejs ejs 请求路径和静态资源文件路径
/XXX 会跳转到 http://域名:端口/XXX ./XXX 会跳转到 当前路径+/XXX XXX(../XXX) 会跳转到 当前路径父级+XXX
- Spring Boot整合Servlet,Filter,Listener,访问静态资源
目录 Spring Boot整合Servlet(两种方式) 第一种方式(通过注解扫描方式完成Servlet组件的注册): 第二种方式(通过方法完成Servlet组件的注册) Springboot整合F ...
- spring boot 2.x拦截器导致静态资源404终极解决办法
首先添加application文件static路径,我的是yml文件 spring: mvc: static-path-pattern: /static/**然后注册拦截器类如下方法; @Overri ...
- spring mvc controller接收请求值及controller之间跳转及传值
spring接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...
- springMVC请求路径 与实际资源路径关系
个人理解: 请求路径可以分为两部分:不通过springmvc转发的url:通过springmvc转发的url: 通过特定的配置,告诉springmvc哪些url需要从springmvc处理,处理后再跳 ...
- Thymeleaf静态资源引入方式及公共页面代码抽取
静态资源引入 Thymeleaf模板引擎url问题,要用如下的方式写,确保在任何情况下都能访问到 <!-- Bootstrap core CSS --> <link href=&qu ...
- 如果在springboot中设置了 修改了默认页面的指向 使用thymleaf模板 而请求不到静态资源 可能是
@Configurationpublic class DefaultView extends WebMvcConfigurerationSupport { @Override public void ...
- Spring的MVC控制器返回ModelMap时,会跳转到什么页面?
控制器中的方法如下: @RequestMapping("/person/personDisplay") public ModelMap defaultHandler() { Sys ...
- ASP.NET - (Session)后台登陆时,判断是不是已经登陆,如果不是,跳转回登陆页
admin(小写):用户输入的账户. password(小写):用户输入的密码. 1.先将用户名和密码,存储到Session会话中. Session["Admin"] = admi ...
随机推荐
- redis整合Spring入门
首先 衷心感谢这篇博客给我入门时的启发 三颗心脏 你需要知道,spring的官方文档中已经注明,与redis整合时,spring的jar包版本不能低于4.2.6,否则不支持,会报错的哟 测试的时候请 ...
- 基于docker安装pxc集群
基于docker安装pxc集群 一.PXC 集群的安装 PXC集群比较特殊,需要安装在 linux 或 Docker 之上.这里使用 Docker进行安装! Docker的镜像仓库中包含了 PXC数据 ...
- altium designer 鼠线
第一: 按“L”进入View Configurations 要确保Default Color for New Nets是勾上的. 第二: 如果“PCB”的下拉列表处于“From-To Editor”状 ...
- KMP算法查找字符串
假设长字符串为t,短字符串为p.为了进行KMP匹配,首先需要计算字符串p的next数组,后面实现了计算该数组的函数void KmpGenNext(char* p, int* next).对于”abca ...
- 记一下拷贝windows下文件到linux下的方法
去官网下载的Putty中包含了如下文件: 其中pscp.exe是一个远程复制文件的工具. 官网:https://www.chiark.greenend.org.uk/~sgtatham/putty/l ...
- 第一章 Vue介绍
5 MVC和MVVM的关系图解 MVVM是前端视图层的分层开发思想,主要把每个页面,分层了M.V和VM.其中,VM是MVVM思想的核心,因为VM是M和V之间的调度者 6 Vue基本代码和MVVM之间对 ...
- MySQL Audit日志审计
一.简介 数据库审计能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库受到的风险行为进行告警,对攻击行为进行阻断,它通过对用户访问数据库行为的记录.分析和汇报,用来帮助用 ...
- linux运维、架构之路-K8s数据管理
一.Volume介绍 容器和Pod是短暂的,它们的生命周期可能很短,会被频繁的销毁和创建,存在容器中的数据会被清除,为了持久化保存容器的数据,k8s提供了Volume.Volume的生命周期独立于容器 ...
- Springboot的resources下资源访问的问题
对于路径问题,是让我一直感到痛苦的事情,首先是因为我的眼高手低,感觉路径这么简单根本没必要去看,但是昨天项目组长的冷嘲热讽让我无地自容:“你竟然连linux和window的路径的区别都不知道,呵呵”. ...
- [Ubuntu]更改所有子文件和子目录所有者权限
https://www.linuxidc.com/Linux/2015-03/114695.htm change mode -> chmod change owner -> chown 1 ...