Я хочу разрешить все URL-адреса, определенные в определенном контроллере, кроме одного.
Допустим, мой контроллер предоставляет 3 URL-адреса с базовым URL-адресом /users
- "/" перечислить всеusers
- "/ {id}" список пользователей по id
- "/ admin" получить сведения об уровне администратора пользователя.
Я хочу разрешить доступ 1и 2 URL для любого пользователя, кроме последнего.
Я делал что-то вроде этого
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
http.authorizeExchange()
.pathMatchers("/users/**")
.permitAll()
.pathMatchers("/users/admin")
.hasRole("ADMIN")
.anyExchange()
.authenticated()
.and()
.httpBasic()
.and()
.formLogin();
return http.build();
}
Но это не работает.Я попробовал и наоборот, то есть
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
http.authorizeExchange()
.pathMatchers("/users/admin")
.hasRole("ADMIN")
.anyExchange()
.authenticated()
.pathMatchers("/users/**")
.permitAll()
.and()
.httpBasic()
.and()
.formLogin();
return http.build();
}
Это также не работает, заявив, что, поскольку anyExchange()
уже зарегистрирован, следующий pathMatcher
не может быть достигнут.