이제 회원수정을 완료한 회원에 대해서 세션값을 바꿔주는 작업을 해보자
UserApiController.java
@RestController
public class UserApiController {
@Autowired
private UserService userService;
@Autowired
private AuthenticationManager authenticationManager;
@PutMapping("/user")
public ResponseDto<Integer> update(@RequestBody User user){
userService.회원수정(user);
// 여기서는 트랜잭션이 종료되기 때문에 DB값은 변경이 됐음.
// 하지만 세션값은 변경되지 않은 상태이기 때문에 우리가 직접 세션값을 변경해줄 것임.
// Service가 아닌 Controller에 작성하는 이유는 DB에 값이 들어가고 Commit이 돼야 바뀐값을 불러와 Session에 띄워줄 수 있기 때문이다.
Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(user.getUserName(), user.getPassword()));
SecurityContextHolder.getContext().setAuthentication(authentication);
return new ResponseDto<Integer>(HttpStatus.OK.value(), 1);
}
}
테스트