Как исправить выражение SpEL в @PreAuthorize? - PullRequest
0 голосов
/ 02 февраля 2019

Привет всем экспертам Spring Security!

Я разработал несколько микросервисов и столкнулся с проблемой безопасности.

В своих проектах я использую аутентификацию / авторизацию через JWT.

Может ли кто-нибудь ответить мне, что может привести к исключению времени выполнения

{
    "timestamp": "2019-02-02T00:40:38.211+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "Failed to evaluate expression 'authentication.name == userId'",
    "path": ".../2"
}

в этом фрагменте кода:

@PreAuthorize("authentication.name == userId")
@GetMapping("/{userId}")
ResponseEntity<String> get(@PathVariable final String userId);

Я также попробовал это с @PreAuthorize("principal.username == #userId"), но получилто же самое исключение между тем @PreAuthorize("hasAuthority('ROLE_COMRADE_MAJOR')") ведет себя правильно.

Что я должен изменить, чтобы исправить эту проблему?

1 Ответ

0 голосов
/ 02 февраля 2019

Должно быть что-то вроде этого

@PreAuthorize("#userId == authentication.name")
ResponseEntity<String> get(@Param("userId") String userId);

См. Например https://github.com/spring-projects/spring-security/issues/2376

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