Idea中如何查看SpringSecurity各Filter信息

 更新时间:2023年01月01日 13:00:27   作者:穿条秋裤到处跑  
这篇文章主要介绍了Idea中如何查看SpringSecurity各Filter信息,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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进行代码过滤,方便又快捷。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Java各种锁在工作中使用场景和细节经验总结

    Java各种锁在工作中使用场景和细节经验总结

    本章主要说一说锁在工作中的使用场景,主要以 synchronized 和 CountDownLatch 为例,会分别描述一下这两种锁的使用场景和姿势
    2022-03-03
  • Mybatis使用@param注解四种情况解析

    Mybatis使用@param注解四种情况解析

    这篇文章主要介绍了Mybatis使用@param注解四种情况解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • JAVA 数据结构之Queue处理实例代码

    JAVA 数据结构之Queue处理实例代码

    这篇文章主要介绍了JAVA 数据结构之Queue处理实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • Springboot中的Controller解析

    Springboot中的Controller解析

    这篇文章主要介绍了Springboot中的Controller解析,Controller是SpringBoot的基本组件,也是MVC结构的组成部分,其作用是将用户提交来的请求通过URL匹配,分发给不同的接收器,该接收器会对其进行相应处理,然后返回处理结果,需要的朋友可以参考下
    2023-09-09
  • java Spring的启动原理详解

    java Spring的启动原理详解

    大家好,本篇文章主要讲的是java Spring的启动原理详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • JAVA如何转换树结构数据代码实例

    JAVA如何转换树结构数据代码实例

    这篇文章主要介绍了JAVA如何转换树结构数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • JVM内存分配及String常用方法解析

    JVM内存分配及String常用方法解析

    这篇文章主要介绍了JVM内存分配及String常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java更新调度器(update scheduler)的使用详解

    Java更新调度器(update scheduler)的使用详解

    Java更新调度器是Java中的一个特性,可以自动化Java应用程序的更新过程,它提供了一种方便的方式来安排Java应用程序的更新,确保其与最新的功能、错误修复和安全补丁保持同步,本文将深入介绍如何使用Java更新调度器,并解释它对Java开发人员和用户的好处
    2023-11-11
  • 整理Java的MyBatis框架中一些重要的功能及基本使用示例

    整理Java的MyBatis框架中一些重要的功能及基本使用示例

    这篇文章主要介绍了Java的MyBatis框架中一些重要的功能及基本使用示例整理,MyBatis可以帮助Java程序进行强大的数据库操作,需要的朋友可以参考下
    2016-04-04
  • Spring Boot2.6.0新特性之默认禁止循环引用

    Spring Boot2.6.0新特性之默认禁止循环引用

    Spring Boot2.6.0为我们带来很多好用的新特性/改进,这篇文章主要给大家介绍了关于Spring Boot2.6.0新特性之默认禁止循环引用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02

最新评论