Я пытаюсь защитить контроллер с аннотацией @PreAuthorize
на уровне уровня и попытаюсь переопределить это поведение, аннотируя некоторые методы с помощью другого @PreAuthorize
. Проблема, однако, заключается в том, что Spring сначала оценивает аннотацию метода (предоставляет доступ), а затем оценивает аннотацию класса (отрицает доступ).
Есть ли способ отменить этот порядок? Я еще не мог понять.
Edit:
На уровне метода я хочу предоставить доступ только к незарегистрированным пользователям:
@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()
, что приводит к предоставлению права доступа и немедленному отказу в доступе.