Spring Security 自定义配置入门
Spring Security 自定义配置入门
参考
- SpringSecurity 官方文档:https://docs.spring.io/spring-security/reference/servlet/configuration/java.html
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 的自动配置

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

进入 SpringBootWebSecurityConfiguration 配置类,发现 WebSecurityEnablerConfiguration 方法上有一个条件注解
@ConditionalOnClass(EnableWebSecurity.class)
,含义为:类路径中是否存在特定的类来决定是否启用某个配置类
发现只要 EnableWebSecurity.class
存在,激活被注解标注的配置类或 Bean。所以 @EnableWebSecurity 注解生效。

那 EnableWebSecurity 类如何存在呢?追溯源码可知,EnableWebSecurity 源码路径为:
org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
发现 EnableWebSecurity 在SpringSecurity 包中,只需要引入 SpringSecurity 坐标即可。
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
}