Использование аннотаций уровня @PreAuthorized на уровне класса вместе с аннотациями уровня @PreAuthorzied - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь получить аннотацию @PreAuthorized для класса контроллера для работы в сочетании с аннотацией @PreAuthorized для методов (конечных точек) того же класса.Обзор класса выглядит примерно так:

@RestController
@RequestMapping("/api")
@PreAuthorized("hasRole('CLASS_LEVEL_ROLE')")
public class foo { 

    @GetMapping("/test")
    @PreAuthorized("hasRole('METHOD_LEVEL_ROLE')")
    @Timed
    public ResponseEntity<String> bar() {
            return ResponseEntity.ok().body("entered method successfully");    
    }
}

В настоящее время происходит только аннотация уровня метода, которая принимается во внимание.

В идеале, что бы произошло, только пользователям с ролью 'CLASS_LEVEL_ROLE' и 'METHOD_LEVEL_ROLE' был бы разрешен доступ к bar ().

Я знаю, что могу использовать

@PreAuthorized("hasRole('CLASS_LEVEL_ROLE') and hasRole('METHOD_LEVEL_ROLE')")

но у меня есть некоторые контроллеры, где все конечные точки должны иметь одинаковые 'CLASS_LEVEL_ROLE', и было бы удобнее иметь обобщенную аннотацию класса.

1 Ответ

0 голосов
/ 25 января 2019

@ PreAuthorize допускает аннотацию на уровне класса. Предполагается, что способ работы состоит в том, что если аннотация уровня метода существует, она будет переопределять аннотацию уровня класса. Вы не можете сделать союз обоих. Таким образом, аннотация уровня класса может рассматриваться как запасной вариант, когда аннотация уровня метода отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...