
1、SpringSecurity中自定义一个的过滤器,将其添加到SpringSecurity过滤器链的合适位置,定义一个自己的过滤器类继承Filter接口即可。
2、创建SpringSecurity配置类,继承WebSecurityConfigurerAdapter,重写方法voidconfigure(HttpSecurityhttp),将自定义的过滤器添加到SpringSecurity过滤器链中。
3、将该过滤器添加到SpringSecurity的过滤器链中即可生效,SpringSecurity支持三种filter添加策略。
4、重启服务测试:访问localhost:8080/login,会跳转到localhost页面,输入账号密码,登录,整个流程的日志记录。
1、基础准备
2、编写Filter
此处我们重点关注 doFilter方法 ,编写实现类重写该方法。
Ⅰ 在自定义Filter实现类上使用@WebFilter注解;
Ⅱ 自定义filterName(随意,不要与其他Filter重复即可);
Ⅲ 定义urlPatterns此处设置为"/*",表示拦截所有请求;
Ⅰ 将传入的 request 与 response 对象转换为 Http类型 ;
Ⅱ 自定义不需要处理的URI数组
Ⅲ 获取请求URI
Ⅳ 判断本次请求
封装checkURI方法,如下:
a、注入PATH_MATCHER,用于路径比较,如下:
b、方法体,如下:
Ⅴ 不需要拦截,则直接放行
Ⅵ 其余路径,判断登录状态
a、已登录,则放行
BaseContext是自定义存储线程userId的类
b、未登录,拦截
自定义常量
拦截,此处使用response向前端返回响应数据R.error(NOT_LOGIN)
3、扫描Filter
在启动类上添加 @ServletComponentScan注解 ,用于扫描 @WebFilter 注解 ,如下:
4、测试
编写Controller类,启动测试。
以上即为Filter基础使用的内容,感谢阅读。
Table 2. 标准过滤器别名和顺序
你可以添加自己的过滤器到列表中,使用custom-filter过滤元件和这些名字来指定你的过滤器应该出现在的位置之一:
<http>
<custom-filter position="FORM_LOGIN_FILTER" ref="myFilter" />
</http>
<beans:bean id="myFilter" class="com.mycompany.MySpecialAuthenticationFilter"/>
你也可以使用after和before属性来让你的过滤器插入到列表中的其他过滤器的前面和后面。FIRST和LAST可以用在position属性来设置你希望将你的过滤器插入到整个列表的前面或者后面。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)