У меня есть 2 типа пользовательских ролей, и мне нравится устанавливать разные страницы для каждого типа пользователей после входа в систему, но я не знаю, как это сделать.
SecurityConfiguration
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
public static final String SQL_LOGIN = "select username, password, active as enabled \n"
+ "from user where username = ?";
public static final String SQL_PERMISSION = "select u.username, r.role as authority\r\n" +
" from user u join user_role ur on u.id = ur.user_id join role r on ur.role_id = r.role_id\r\n" +
" where u.username = ?";
@Autowired
private DataSource dataSource;
@Autowired
public void configurGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource).usersByUsernameQuery(SQL_LOGIN)
.authoritiesByUsernameQuery(SQL_PERMISSION).passwordEncoder(passwordEncoder()); // bcrypt
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/js/**").permitAll()
.antMatchers("/css/**").permitAll()
.antMatchers("/img/**").permitAll()
.antMatchers("/fonts/**").permitAll()
.antMatchers("/user/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login").permitAll()
.defaultSuccessUrl("/vehicle/list", true)
.and()
.logout();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
WebMvcConfig
@Configuration
открытый класс WebMvcConfig реализует WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
Как я могу создать страницу разной конечной точки, одну для ADMIN и другую для пользователя?
//(ADMIN)
.loginPage("/login").permitAll()
.defaultSuccessUrl("/vehicle/list_admin", true)
//USER
.loginPage("/login").permitAll()
.defaultSuccessUrl("/vehicle/list", true)
Что-то в этом роде, кто-то может мне помочь, пожалуйста?
Привет