Idea中如何查看SpringSecurity各Filter信息

Ula ·
更新时间:2024-09-21
· 741 次阅读

目录

Filter和Filter Chain

Idea Evalute Expression

创建工程

debug启动服务

evaluate expression

总结

Filter和Filter Chain

SpringSecurity的认证逻辑是通过Filter Chain实现的,一个项目中Filter是链式执行,其中一环校验不通过,则可终止后续Filter以及Api的调用。

    public void doFilter(ServletRequest request, ServletResponse response,             FilterChain chain) throws IOException, ServletException;

在Filter的实现类中,doFilter方法里调用chain的doFilter方法,表示当前过滤器通过,继续FilterChain的下一个Filter

chain.doFilter(request, response); Idea Evalute Expression

下面通过一个简单的项目,来查看一下Spring Security中的Filter

创建工程

通过向导创建一个springBoot工程,引入web和security依赖

        <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-security</artifactId>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>

启动类 

@SpringBootApplication public class SpringSecurityLearningApplication {     public static void main(String[] args) {         ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringSecurityLearningApplication.class, args);         System.out.println();     } }

SpringApplication.run()的返回值就是Spring容器,ConfigurableApplicationContext是ApplicationContext的子类。

System.out.println();是为了便于打断点,查看applicationContext的信息。

debug启动服务

evaluate expression

通过邮件选Evaluate Expression或点击debugger栏位上是图标

点击输入框右侧的双向箭头,切换为Code fragment模式,个人觉得这个更好用

输入以下内容,获取容器中的FilterChainProxy对象,再点击窗口下侧的Evaluate

result中的filterChains中的filters就是Filter链信息,其中,UsernamePasswordAuthenticationFilter、ExceptionTranslationFilter

以及FilterSecurityInterceptor为springSecurity认证相关的Filter。

在平时debug时,如果list中的数据很多,凭肉眼去找肯定很难找,通过右键对象出来的filter很难用,可以通过Evaluate进行代码过滤,方便又快捷。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。 



filter idea

需要 登录 后方可回复, 如果你还没有账号请 注册新账号