[英]Spring Security : Authentication with Database
我已经实现了从数据库连接和检索用户的方法:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select username,password, enabled from users where username=?")
.authoritiesByUsernameQuery(
"select username, role from user_roles where username=?");
}
因此,我让用户拥有他们的角色。 在此示例代码中,user_roles列将为“ ROLE_USER”或“ ROLE_ADMIN”。 我想用一个布尔值来更改此字段,其中ROLE_ADMIN为0,ROLE_USER为1。
由于限制,我无法保留user_roles。
我该怎么办?
您可以使用CASE运算符调整查询以将0映射到“ ROLE_USER”,将1映射到“ ROLE_ADMIN”
.authoritiesByUsernameQuery(
"select username, case when role=1 then 'ROLE_USER' else 'ROLE_ADMIN' as role from user_roles where username=?")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.