弹簧安全重定向用户的角色

时间:2015-07-05 18:21:36

标签: spring spring-security

我想根据他的ROLE将用户重定向到一个页面,但我不知道该怎么做。 我整个都打了一遍,但它对我不起作用。即使用户有ROLE_USER或其他,它也会重定向ROLE_MASTER。 我用不同的方式尝试过,你可以在评论的代码中看到,但没有一个能正常工作。

代码是:

    @Configuration
    @EnableWebSecurity
    public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    UsersDetailsServiceImpl usersDetailsService;

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("stefan").password("1234").roles("ADMIN");
        auth.userDetailsService(usersDetailsService);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/res/**");
    }

    //.csrf() is optional, enabled by default, if using WebSecurityConfigurerAdapter constructor
    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http    .authorizeRequests()
                .antMatchers("/master/**").access("hasRole('ROLE_MASTER')")
                .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
                .antMatchers("/user/**").access("hasRole('ROLE_USER')")
                .antMatchers("/viewer/**").access("hasRole('ROLE_VIEWER')")
                .and()
                .formLogin().loginPage("/").failureUrl("/?error")
                .usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/master")
                .and()
                .logout().logoutUrl("/logout").logoutSuccessUrl("/?logout")
                .and()
                .csrf();

//                .and()
//                .authorizeRequests()
//                .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
//                .and()
//                .formLogin().loginPage("/").failureUrl("/?error")
//                .usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/admin")
//                .and()
//                .logout().logoutUrl("/logout").logoutSuccessUrl("/?logout")
//                .and()
//                .csrf()
//
//                .and()
//                .authorizeRequests()
//                .antMatchers("/user/**").access("hasRole('ROLE_USER')")
//                .and()
//                .formLogin().loginPage("/").failureUrl("/?error")
//                .usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/user")
//                .and()
//                .logout().logoutUrl("/logout").logoutSuccessUrl("/?logout")
//                .and()
//                .csrf()
//
//                .and()
//                .authorizeRequests()
//                .antMatchers("/viewer/**").access("hasRole('ROLE_VIEWER')")
//                .and()
//                .formLogin().loginPage("/").failureUrl("/?error")
//                .usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/viewer")
//                .and()
//                .logout().logoutUrl("/logout").logoutSuccessUrl("/?logout")
//                .and()
//                .csrf();


//        http.authorizeRequests()
//                .antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
//                .and()
//                .formLogin().loginPage("/").failureUrl("/?error")
//                .usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/admin")
//                .and()
//                .logout().logoutUrl("/logout").logoutSuccessUrl("/?logout")
//                .and()
//                .csrf();

//        http.authorizeRequests()
//                .antMatchers("/user/**").access("hasRole('ROLE_USER')")
//                .and()
//                .formLogin().loginPage("/").failureUrl("/?error")
//                .usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/user")
//                .and()
//                .logout().logoutUrl("/logout").logoutSuccessUrl("/?logout")
//                .and()
//                .csrf();

//        http.authorizeRequests()
//                .antMatchers("/viewer/**").access("hasRole('ROLE_VIEWER')")
//                .and()
//                .formLogin().loginPage("/").failureUrl("/?error")
//                .usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/viewer")
//                .and()
//                .logout().logoutUrl("/logout").logoutSuccessUrl("/?logout")
//                .and()
//                .csrf();
        //  http.formLogin().loginPage("/admin/login").failureUrl("/admin/login?error").defaultSuccessUrl("/main",true).usernameParameter("username").passwordParameter("password");

    }

}

任何想法我该怎么办?

1 个答案:

答案 0 :(得分:0)

var self = this; setTimeout(self.method, 1000); 对象实施您自己的 AuthenticationSuccessHandler检查用户角色,并将重定向发送到合适的网址

authentication 

full example with roles