我正在使用“spring boot”应用程序,我想配置安全性以使用Group Authority authentication。 这似乎很简单但是当我尝试登录时,Spring总是检查用户权限而不是组权限。
我的配置类是:
@Configuration()
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/css/**","/js/**", "/font-awesome/**").permitAll()
.anyRequest()
.authenticated().and().formLogin().loginPage("/login")
.failureUrl("/login?error").permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select cpf as username, senha as password, ativo as enabled from funcionario where cpf=?")
.groupAuthoritiesByUsername(
"select g.id, g.nome, p.nome " +
"from grupo g, funcionario_grupo fg, grupo_permissoes gp, permissoes p " +
"where gf.username = ? and g.id = gp.grupo_id and g.id = fg.group_id gp.permissoes_id = p.id");
}
}
我尝试了几种方法来配置Spring以使用我的groupAuthoritiesByUsername,即使使用XML,但也没有成功。
有人可以帮助我,我做错了什么?缺少什么?
答案 0 :(得分:0)
我无法弄清楚我的配置有什么问题,但最后我可以解决创建自定义UserDetailService的问题,我做了一些像http://www.sivalabs.in/2014/03/springmvc4-spring-data-jpa.html这样的想法只是改变了一点来满足我的需求
答案 1 :(得分:0)
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
...
auth.jdbcAuthentication().getUserDetailsService().setEnableAuthorities(false);
...
}