Проверка подлинности операции перед каждым действием в весенний период загрузки - PullRequest
0 голосов
/ 01 июня 2019

У меня есть блок кода, как показано ниже. Для каждого метода я вызываю аутентификацию действий. Можно ли эффективно делать аннотации или другие вещи?

@GetMapping
public ResponseEntity getAction(@PrincipalUser user, Long actionId)
{
   repository.checkUserForAction(user.getId(), actionId);
   implement actions...
   return service call;
}
@PostMapping
public ResponseEntity addAction(@PrincipalUser user)
{
   repository.checkUserForAction(user.getId());
   implement actions...
   return service call;
}
@DeleteMapping
public ResponseEntity addAction(@PrincipalUser user, Long actionId)
{
   repository.checkUserForAction(user.getId(), actionId);
   implement actions... 
   return service call;
}

На самом деле, здесь другая моя проблема в том, что я каждый раз вызываю метод репозитория, и я знаю, что это неэффективный способ.

1 Ответ

2 голосов
/ 01 июня 2019

Вы можете использовать аннотации Spring Security и @PreAuthorize.

Пример:

@PreAuthorize("@authorizationService.check(#actionId)")
@DeleteMapping
public ResponseEntity performAction(Long actionId) {
implement actions...
}

И инкапсулировать логику авторизации внутри authorizationService, более того, authorizationService должен быть компонентом и @EnableGlobalMethodSecurity(prePostEnabled = true) должен быть установлен.

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