九、Spring security 配置基于jdbc的认证登录
环境准备
- spring boot 2.7.x
一、添加maven坐标
<!--加入数据库jdbc连接-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 加入H2数据库依赖-->
<!-- 不填版本号,默认版本继承自spring boot框架 -->
<!-- 加入scope,标记为仅在运行时使用-->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
二、属性配置
application.yml
h2:
console:
# 显示H2嵌入式UI管理界面
enabled: true
# 访问H2 UI界面路径
path: /h2-console
settings:
trace: false
web-allow-others: false
三、添加数据源配置
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript(JdbcDaoImpl.DEFAULT_USER_SCHEMA_DDL_LOCATION)// 自动建表
.build();
}
四、配置认证管理器,引用数据源
这里创建了一个用户名为user ,密码为123456(会进行加密后存储)的用户,在程序启动时会自动插入一条用户数据到h2数据库。后续的请求认证,将通过sql获取数据库进行认证用户身份
@Bean
public UserDetailsManager userDetailsManager() {
UserDetails user = User.builder()
.username("user")
.password(passwordEncoder().encode("123456"))
.roles("USER")
.build();
JdbcUserDetailsManager users = new JdbcUserDetailsManager(dataSource());
users.createUser(user);
return users;
}
五、h2界面无法正常显示的调整
配置H2控制台界面的正常显示 https://docs.spring.io/spring-boot/docs/2.7.11/reference/html/data.html#data.sql.h2-web-console.spring-security
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.headers((headers) -> headers.frameOptions().sameOrigin());
}

浙公网安备 33010602011771号