Пользовательская проверка для всех запросов Spring Rest API - PullRequest
0 голосов
/ 25 октября 2019

Я использую Spring Rest API, и я хочу применить пользовательскую проверку (точнее, я хочу проверить аутентификацию пользователя или нет, для этого мне также нужен объект HttpServletRequest) перед входом в запрос остальных API.

Например, у меня есть 3 API. 1. RestAPI / test1 2. RestAPI / test2 3. RestAPI / test3

поэтому перед выполнением запроса я хочу убедиться, что пользователь аутентифицирован или нет.

Могу ли я использовать ConstraintValidator?

Как мне этого добиться?

Я не использую пружинную загрузку ...

Спасибо!

1 Ответ

0 голосов
/ 25 октября 2019

Есть следующие способы сделать это:

1) Пружинная защита @PreAuthorize("isAuthenticated()") или @Secured("ROLE_ADMIN")

См. нить для получения дополнительной информации

2) Вы можете создать собственную аннотацию, добавить аспект с помощью SecurityContextHolder, отметьте ее:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Authenticated {
}

import org.aspectj.lang.annotation.Aspect;
@Aspect
@Component
public class AuthenticatedAspect {

    @Around("@annotation(Authenticated)")
    public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
         if (!SecurityContextHolder.getContext().getAuthentication().isAuthenticated()) {
             throw your exeption
         }
         return joinPoint.proceed();
    }
}

Для второго подхода вам, вероятно, потребуется добавить proxy-target-class="true" <aop:aspectj-autoproxy proxy-target-class="true"/>

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