Spring Boot 集成 Spring Security 之自动装配
实现功能及软件版本说明
使用 Spring Boot 集成 Spring Security 实现 Servlet 项目的安全个性化配置
Spring Boot 版本:2.7.18
Spring Security 版本:5.7.11
创建 Spring Boot 项目
1、创建 Spring Boot 项目,目录结构如下
2、引入 Spring Security 包,完整 pom.xml 如下
查看自动装配配置类
查看 Security Servlet 相关自动装配配置类
自动装配配置类之 SecurityAutoConfiguration
1、部分源码
2、主要作用
导入 SpringBootWebSecurityConfiguration
3、SpringBootWebSecurityConfiguration
1)、部分源码
2)、主要作用
1、默认 Security 配置(Spring 容器中没有 SecurityFilterChain 和 WebSecurityConfigurerAdapter)时,向 Spring 容器中注入默认过滤器链,即用户没有自定义过滤器链时,生成默认过滤器链
2、Spring 容器中不存在名称为 springSecurityFilterChain 对象时,启用 WebSecurity,即用户未显示的启用 WebSecurity 时,隐式的启用 WebSecurity
4、@EnableWebSecurity
1)、部分源码
2)、主要作用
导入 WebSecurityConfiguration
导入 HttpSecurityConfiguration
5、WebSecurityConfiguration
1)、部分源码
2)、主要作用
两种方式注册过滤器链:
继承 WebSecurityConfigurerAdapter(本质是实现 SecurityConfigurer 接口)(已弃用)直接向 Spring 容器中注册 SecurityFilterChain 对象没有默认的过滤器链时,使用 WebSecurityConfigurerAdapter 中默认配置生成过滤器链
根据配置的 SecurityFilterChain 集合构建 FilterChainProxy 类型的对象并注入到 Spring 容器中名称为 springSecurityFilterChain
6、HttpSecurityConfiguration
1)、部分源码
2)、主要作用
Spring 容器中注册 HttpSecurity 对象
httpSecurity 用于配置构建自定义过滤器链
自动装配配置类之 UserDetailsServiceAutoConfiguration
1、部分源码
2、主要作用
用户未自定义认证接口时,生成默认认证接口 inMemoryUserDetailsManager(基于内存用户认证)
生成默认名称为 user,密码为随机生成的 uuid(项目启动时会打印在控制台中),角色为空的用户存入内存中
3、通过配置文件可以修改默认用户名、密码、角色(示例如下)
自动装配配置类之 SecurityFilterAutoConfiguration
1、部分源码
2、主要作用
注册 DelegatingFilterProxyRegistrationBean(委托过滤器代理注册 Bean)
设置代理目标 Bean 对象名称为 springSecurityFilterChain
文章转载自:那你为何对我三笑留情
评论