Spring Boot忽略了Group Authority的身份验证

时间:2015-03-20 00:37:17

标签: java spring spring-mvc spring-security spring-boot

我正在使用“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,但也没有成功。

有人可以帮助我,我做错了什么?缺少什么?

2 个答案:

答案 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);
    ...
}