스프링 시큐리티 세션 정보 변경

greenTea·2023년 6월 18일
0

SecurityContextHolder 값 변경

🫠스프링 시큐리티를 사용하다 보면 유저의 정보가 바뀌는 경우가 있습니다.
이 경우 SecurityContextHolder에 들어 있는 정보를 바꾸지 않을 경우 정보의 불일치가 일어나기 때문에 바꿔주어야 합니다. 방법은 아래와 같습니다.

Code

UserDetails newPrincipal = userDetailsService.loadUserByUsername(dto.getUsername());
            UsernamePasswordAuthenticationToken token =
                    new UsernamePasswordAuthenticationToken(newPrincipal, newPrincipal.getPassword(), newPrincipal.getAuthorities());

            token.setDetails(SecurityContextHolder.getContext().getAuthentication().getDetails());

            SecurityContextHolder.getContext().setAuthentication(token);

설명

🫡새로운 Authentication을 만들어서 SecurityContextHolder.getContext().setAuthentication(token);을 통해 새로운 값을 넣어주면 변경이 됩니다.

🥳userDetailsService.loadUserByUsername의 바뀐 정보를 토대로 다시 검증 과정을 거치는 단계입니다.
해주는 것이 좋습니다.

profile
greenTea입니다.

0개의 댓글