Spring Security @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 () , что приводит к предоставлению права доступа и немедленному отказу в доступе снова.

14
задан Cœur 16 January 2017 в 16:27
поделиться