Как настроить Spring Security, чтобы разрешить метод GET для всех и ограничить другие методы конкретными ролями без особJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как настроить Spring Security, чтобы разрешить метод GET для всех и ограничить другие методы конкретными ролями без особ

Сообщение Anonymous »

Я хочу разрешить всем пользователям отправлять запросы GET к /product, но для любых других методов, таких как POST, DELETE и т. д., я хочу, чтобы у них была роль администратора или пользователя. >
Есть ли способ разрешить получение и запрос роли для другого, не написав так много строк кода? или мне нужно указать каждый метод HTTP индивидуально, как я сделал ниже?

Код: Выделить всё

authorizeConfig.requestMatchers(HttpMethod.GET,"/product").permitAll();
authorizeConfig.requestMatchers(HttpMethod.POST,"/product").hasAnyRole("admin", "user");
authorizeConfig.requestMatchers(HttpMethod.DELETE,"/product").hasAnyRole("admin", "user");
Для справки, это мой компонент securityFilterChain:

Код: Выделить всё

 @Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.authorizeHttpRequests(
authorizeConfig -> {
authorizeConfig.requestMatchers("/").permitAll();
authorizeConfig.requestMatchers(HttpMethod.GET,"/product").permitAll();
authorizeConfig.requestMatchers(HttpMethod.POST,"/product").hasAnyRole("admin", "user");
authorizeConfig.requestMatchers("/protected").hasRole("admin");
authorizeConfig.requestMatchers("/userinfo").hasRole("user");
authorizeConfig.anyRequest().authenticated();
})
.oauth2Login(Customizer.withDefaults())
.oauth2ResourceServer(config -> {
config.jwt(Customizer.withDefaults());
})
.cors(cors -> cors.configurationSource(corsConfigurationSource()))
.build();
}
Я использую Java 21 с весенней загрузкой 3.2.3.

Подробнее здесь: https://stackoverflow.com/questions/786 ... restrict-o
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»