나는 SecurityContextHolder
사용하고 사용자 정의 UserDetailsService
는 SecurityContextHolder
에서 UserDetails
를 얻을 :SecurityContextHolder는 안전합니까?
Object o = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
UserDetailsDTO user = (UserDetailsDTO) o;
가 나는 등 널 검사를, 왼쪽으로, 그러나 그것은 생각입니다. SecurityContextHolder
클래스를 보면
@Around("execution(* user.service.*.*(..))")
public Object audit(ProceedingJoinPoint call) throws Throwable {
// get user id
// add audit row in db
}
, 그것은 기본적으로 ThreadLocal
를 사용하지만 포인트 컷 물건은 캡슐화 스레딩 논리의 일종을 갖고있는 것 같아요 : 나는 @Aspect
의 @Around
포인트 컷이 사용하고 있습니다.
사용자 충돌 (다른 동시 세션의 UserB 감사 이벤트에 대해 하나의 세션에서 UserA에 액세스) 또는 null 사용자가있을 수 있습니다.
자격 증명/사용자 프로필을 얻는 더 좋은 방법이 있습니까?
나는 그것을 보았다. 그러나 사람은 그것이 봄 녀석들에게는 커다란 난점과 같다. 정적 인 util 클래스와 setStrategyName에는 다음과 같은 Javadoc blurb가 있습니다.'주어진 JVM에 대해이 메소드를 두 번 이상 호출하지 마십시오. 전략을 다시 초기화하고 기존 전략을 사용하여 기존 스레드에 나쁜 영향을 미치므로. 결국 싱글 톤 래퍼 클래스가 생성됩니다. – Droo
나는 또한 시스템 속성이 있다고 생각한다.'public static final String SYSTEM_PROPERTY = "spring.security.strategy";' – Droo