如Spring Security文档(here)所述, spring-security-core 库提供了 UserDetailsService 实现,这要求我们实现一些实现框架使用的数据库架构。
如果我们遵循此默认配置,则可以轻松实现JDBC身份验证,如下所示:
@Autowired
private DataSource dataSource;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication()
.dataSource(dataSource)
.withDefaultSchema()
.withUser(User.withUsername("user")
.password(passwordEncoder().encode("pass"))
.roles("USER"));
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
如果我们使用的是与HSQLDB不同的内容,也许还可以重新定义一些查询。
上面显示的脚本当然会在数据库中创建用户。现在,我的问题是:是否可以用SQL脚本替换编程性数据库初始化.withUser(...)
?
如果我将 data.sql 脚本添加到资源中,则该脚本会在创建架构之前尝试执行并失败。