Так что я искал решение, но я не могу найти ничего, что именно то, что я хочу, я ищу перегрузить метод для различных разрешений, основанных на пользователе.Я использую Spring boot и Spring security.Например:
@ResponseBody
@GetMapping("/role")
@Secured("ROLE_ADMIN")
public ResponseEntity<String> areYouAdmin() {
return new ResponseEntity<>("ADMIN YES", HttpStatus.OK);
}
@ResponseBody
@GetMapping("/role")
@Secured("ROLE_USER")
public ResponseEntity<String> areYouUser() {
return new ResponseEntity<>("USER YES", HttpStatus.OK);
}
так что здесь, если пользователь ROLE_USER, он получит ответ «USER YES», а ROLE_ADMIN будет «ADMIN YES».Я знаю, что это возможно, добавив проверку в фактическом методе и используя роль в качестве условия, но задаваясь вопросом, существует ли более чистый подход.Возможный вариант использования здесь был бы, если бы они искали ресурс, и если бы они были пользователем, он отображал бы только те, где статус был ОТКРЫТ или что-то еще, тогда администратор может фильтровать и искать по всему статусу.Другой вариант, если мы хотим вернуть другое dto, то есть администратор может просматривать всю информацию о пользователе.
Я также думал о том, чтобы просто использовать другой путь и использовать мою конфигурацию веб-безопасности, IE:
.antMatchers("/api/admin").hasRole(ADMIN)
.antMatchers("/api/user").hasRole(USER)
но я действительно не хочу, чтобы мой интерфейс был "умным", сервер должен просто отображать данные в зависимости от роли без каких-либо специальных путей или нового сервлета.Заранее спасибо за любую помощь!