我想根据他的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");
}
}
任何想法我该怎么办?
答案 0 :(得分:0)
从 var self = this;
setTimeout(self.method, 1000);
对象实施您自己的 AuthenticationSuccessHandler
检查用户角色,并将重定向发送到合适的网址
authentication