Проблема контроля доступа на основе ролей Spring Security с подстановочным знаком в конфигурацииJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Проблема контроля доступа на основе ролей Spring Security с подстановочным знаком в конфигурации

Сообщение Anonymous »

Я столкнулся с конкретной проблемой в конфигурации Spring Security для управления доступом на основе ролей в приложении Spring Boot. Проблема связана с использованием подстановочных знаков (*) в шаблонах URL-адресов при определении правил доступа для разных ролей.
В случае с разрешениемAll() я заметил, что мне не нужно использовать подстановочный знак перед определенными URL-адресами, такими как /event/get-available-slots и /event/get-marker-data, чтобы конфигурация работала правильно. Однако в случае hasRole("admin") я столкнулся с ошибкой/доступ запрещен без подстановочного знака (*)
Контроллер событий

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

@RequestMapping("/event")
@RestController
public class EventController {

@GetMapping("/get-marker-data")
public List getAllEventsInRetailFlow() {}

@GetMapping("/getEvent")
public List getAllEvents() {}

@PostMapping("/get-available-slots")
public List getAvailableSlots(@RequestBody AvailableSlotsRequest request) {}

@GetMapping("/get-available-slots/{bookingId}")
public ResponseEntity getAvailableSlots(@PathVariable String bookingId) {}

@PostMapping("/postEvent")
public ResponseEntity postEvent(@RequestBody EventRequest request) {}

@PutMapping("/updateEvent/{eventId}")
public ResponseEntity putEvent(@PathVariable String eventId, @RequestBody EventUpdateRequest request) {}

@DeleteMapping("/deleteEvent/{eventId}")
public ResponseEntity deleteEvent(@PathVariable String eventId) {}
}

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

authorizeHttpRequests(auth -> auth.requestMatchers("/admin/login", "/user/send-otp", "/user/verify-otp",
"/event/get-available-slots", "/event/get-marker-data", "/setting/settings-in-retail-flow",)
.permitAll()
.requestMatchers("*/event/updateEvent", "*/event/postEvent", "*/event/deleteEvent",)
.hasRole("admin")
Я также работал над другим проектом, где аналогичные конфигурации управления доступом на основе ролей не требовали использования подстановочных знаков. Есть ли разница в конфигурации или поведении, которая могла бы объяснить это несоответствие?

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

@RestController
@RequestMapping("/api/aabushan")
public class TagController {
@PostMapping("/tags")
public ResponseEntity addTag(@RequestBody TagRequest request) {
TagResponse newTag = tagService.addNewTag(request);
return ResponseEntity.status(HttpStatus.CREATED).body(newTag);
}
}

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

@RestController
@RequestMapping("/api/aabushan")
public class TagController {
@PostMapping("/tags")
public ResponseEntity addTag(@RequestBody TagRequest request) {
TagResponse newTag = tagService.addNewTag(request);
return ResponseEntity.status(HttpStatus.CREATED).body(newTag);
}
}
Конкретные проблемы: зачем нужен подстановочный знак в шаблонах URL-адресов, таких как "/event/updateEvent", "/event/postEvent", "*/event/deleteEvent" " для hasRole("admin") и не требуется в "/event/get-available-slots" и "/event/get-marker-data"? Существует ли конкретное правило безопасности Spring, обязывающее такое использование, и почему удаление или непоследовательное добавление подстановочных знаков приводит к ошибкам?

Подробнее здесь: https://stackoverflow.com/questions/782 ... figuration
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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