Я пытаюсь защитить контроллер с помощью аннотации @PreAuthorize
на уровне типа и пытаюсь переопределить это поведение, комментируя некоторые методы с другим @PreAuthorize
.Проблема, однако, в том, что Spring сначала оценивает аннотацию метода (предоставляет доступ), а затем оценивает аннотацию класса (запрещает доступ).
Есть ли способ отменить этот порядок?Пока не могу понять.
Редактировать:
На уровне метода я хочу предоставить доступ только незарегистрированным пользователям:
@PreAuthorize("isAnonymous()")
@RequestMapping(value = "/create", method = RequestMethod.GET)
public String renderCreateEntity(ModelMap model) {
return userService.renderCreateEntity(model);
}
стандарт для этого контроллера, однако, должен позволять только полностью аутентифицированным пользователям:
@Controller
@RequestMapping(value = "/user")
@PreAuthorize("isFullyAuthenticated()")
public class UserController { [...] }
При пошаговом отладке через приложение, я вижу, что isAnonymous()
сначала оценивается, а затем isFullyAuthenticated()
, что приводитпредоставление права доступа и немедленное повторное запрещение доступа.