我已经实现了这种方式来连接和检索我的数据库中的用户:
@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。
我怎么能这样做?
答案 0 :(得分:0)
您可以使用CASE operator
调整查询以将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=?")