跳至主要內容

Spring Security 自定义配置入门

Jin大约 1 分钟

Spring Security 自定义配置入门

参考

1、用户自定义配置

@Configuration
//@EnableWebSecurity //开启 SpringSecurity 自定义配置(在 SpringBoot 项目中可以省略)
public class WebSecurityConfig {
    @Bean
    public UserDetailsService userDetailsService() {
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(User.withDefaultPasswordEncoder().username("jin").password("jin").roles("jin").build());
        return manager;
    }
}

**测试:**使用用户名:jin,密码:jin 登录

2、@EnableWebSecurity 注解分析

@EnableWebSecurity 为开启 SpringSecurity 自定义配置,但在 SpringBoot 项目中可以省略

spring-boot-autoconfigure 模块包中,提供了 SpringSecurity 的自动配置

![image-20241119174413302](images/07-Spring Security 自定义配置入门/image-20241119174413302.png)

进入 SecurityAutoConfiguration 类发现,导入了 SpringBootWebSecurityConfiguration 配置类

![image-20241119174740326](images/07-Spring Security 自定义配置入门/image-20241119174740326.png)

进入 SpringBootWebSecurityConfiguration 配置类,发现 WebSecurityEnablerConfiguration 方法上有一个条件注解

@ConditionalOnClass(EnableWebSecurity.class),含义为:类路径中是否存在特定的类来决定是否启用某个配置类

发现只要 EnableWebSecurity.class 存在,激活被注解标注的配置类或 Bean。所以 @EnableWebSecurity 注解生效

![image-20241119174944855](images/07-Spring Security 自定义配置入门/image-20241119174944855.png)

那 EnableWebSecurity 类如何存在呢?追溯源码可知,EnableWebSecurity 源码路径为:

org.springframework.security.config.annotation.web.configuration.EnableWebSecurity

发现 EnableWebSecurity 在SpringSecurity 包中,只需要引入 SpringSecurity 坐标即可。

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'
}
贡献者: Jin