本文基于SpringBoot/Spring框架,如果需要查看Java Servlet版本,请步入:
https://blog.csdn.net/sumu_Guyuhang/article/details/112541977?spm=1001.2014.3001.5502
步骤解析
登录过滤器场景
:在web开发中,存在一个问题,当用户登录后才能进行后面的操作。如果用户没有登陆那么后面的所有url请求都必须要拦截。
类似于这种拦截
的场景,就适合使用过滤器的方式来进行实现,还有适合使用的场景有:登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换…
以登录过滤器场景
,本文收集了SSM/SpringBoot中过滤器如何使用或如何编写。作为一个学习总结,也便于日后查找。
核心就是构造一个类,实现Filter接口,重写doFilter方法
- 先定义一个数组,存放要放行的url。
// 定义要放行的url数组
private String[] urls = {
"/employee/login",
"/employee/logout",
"/backend/**",
"/front/**"
};
- SSM/SpringBoot项目中,采用
@WebFilter(filterName = "LoginCheckFilter", urlPatterns = "/*")
注解来表明该类是一个过滤器。作用相当于在web.xml中配置过滤器。- filterName: 过滤器名称
- urlPatterns: 过滤器要过滤的uri,支持通配符。
org.springframework.util.AntPathMatcher
该类可以用来路径匹配,并支持通配符
// 路径匹配器,支持通配符
public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();
/**
* 判断路径是否被拦截
* @param requestURI
* @return
*/
public boolean check(String requestURI){
for(String uri : urls){
boolean match = PATH_MATCHER.match(uri, requestURI);
if(match){
return true;
}
}
return false;
}
filterChain.doFilter(request,response);
用来放行操作。
完整代码
package com.lz.gyh.filter;
import com.alibaba.fastjson.JSON;
import com.lz.gyh.common.R;
import lombok.extern