@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/entrysheet/**").permitAll()//.hasRole("USER")
.antMatchers("/users/**").hasRole("ADMIN") //Needs to be first
.anyRequest().authenticated()
;
}
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UsersRepository usersRepository;
@Bean
public UserDetailsService userDetailsService() {
System.out.println("fdsfdsfsd");
InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
usersRepository.findAll().forEach(users -> {
UserDetails userDetails = User.withUsername(users.getUsername()).password(users.getPassword())
.roles((users.getIdRole() != null && users.getIdRole() == 1) ? "ADMIN" : "USER").build();
System.out.println(userDetails.getUsername() + " " + userDetails.getPassword() +
userDetails.getAuthorities());
manager.createUser(userDetails);
}
);
return manager;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
//.antMatchers("/entrysheet/**").permitAll().anyRequest().authenticated()//.hasRole("USER")
//.antMatchers("/users/**").hasRole("ADMIN") //Needs to be first
.antMatchers("/", "/**").permitAll() //Permit all other roles to all other paths
.anyRequest().authenticated()
//.authorizeRequests()
//.antMatchers("/entrysheet/**").permitAll()//.hasRole("USER")
//.antMatchers("/users/**").hasRole("ADMIN") //Needs to be first
//.anyRequest().authenticated()
;
}
}
Вот моя конфигурация.Но кажется, что / users / не может быть доступен никому.
Всякий раз, когда я добавляю ".hasRole (" RoleName ")", он просто запрещает доступ к этой роли.Я получаю {"отметку времени": 1526671066818, "статус": 403, "ошибка": "Запрещено", "сообщение": "Доступ запрещен", "путь": "/ users"}
из этого.
Я хочу, чтобы некоторые запросы были разрешены только «USER», например: «/ entrysheet», «/ datasheet» и т. Д., В то время как «/ users» доступен только «ADMIN»