본문 바로가기

Dev/Spring Boot

Spring Boot - 로그인 정보 변경, 세션 변경

728x90

 이전에 보았듯, 스프링 시큐리티는 엄격한 보안 규칙으로 로그인시 몇번의 검증을 합니다. 그렇다면 유저정보를 바꾸면 어떻게 될까요? 개발자가 사용자 정보를 바꾸는 기능을 코딩했다고 가정합시다.

 

ex) 사용자의 사는곳

서울시 동작구 -> 서울시 광진구

 

변경 후 사용자가 자신의 정보를 클릭하면

 

사는곳 : 서울시 동작구

 

이렇게 바뀌지 않았을 겁니다. 바뀐 정보를 보려면 재로그인 해야합니다. 왜일까요? 데이터베이스는 바뀌었지만 세션이 바뀌지 않았기 때문입니다. 지금 스프링 시큐리티는 이전의 정보를 갖고 있는 유저의 정보가 들어간 세션이기 때문이죠. 이때는 강제로 세션을 바꿔야합니다.

 

Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword()));

SecurityContextHolder.getContext().setAuthentication(authentication);

authentication을 새로 정의하고 토큰을 만들었습니다. 유저의 이름과 패스워드로. 이후 홀더에 삽입해줍니다. 여기서 유저의 정보는 어떻게 코딩하느냐에 따라 다르겠지만 아이디 비밀번호가 들어가는 것이 일반적입니다.