• 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, когда я проверяю объект контекста безопасности, аутентификация по-прежнему остается исходной.
Могу ли я узнать, что было бы правильным способом сделать это? Мне нужно манипулировать объектом аутентификации в самом начале и убедиться, что последующие вызовы будут использовать его.
Есть идеи?