繁体   English   中英

Spring Security:数据库身份验证

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM