Сохраните контекст безопасности Spring обратно в сеанс для последующего использования - PullRequest
0 голосов
/ 02 августа 2020
• 1000 Мне удалось использовать совет Around для перехвата конечной точки REST, которая будет срабатывать при первом входе в систему:
    @Around("execution( * com.myproject.CurrentUser.get(..)))"
    public ResponseEntity getCurrentUser(ProceedingJoinPoint pjp) throws Exception {

        SecurityContextHolder.getContext().setAuthentication(getNewAuthentication());

        ((ServletRequestAttributes) RequestContextController.currentRequestAttributes())
            .getRequest().getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING.SECURITY_CONTEXT_KEY, SecurityContextHolder.getContext());

        ResponseEntity response = (ResponseEntity) pjp.proceed();

        return response;

    }

Метод getNewAuthentication () подтвержден ОК, он возвращает PreAuthenticatedAuthenticationToken, который включает дополнительные полномочия.

Однако в последующих вызовах REST, когда я проверяю объект контекста безопасности, аутентификация по-прежнему остается исходной.

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

Есть идеи?

...