springsecurity5.7.自定义过滤control

springsecurity5.7.自定义过滤control,第1张

springsecurity5.7.自定义过滤control步骤:

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属性来设置你希望将你的过滤器插入到整个列表的前面或者后面。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/8006042.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存