로그인을 진행하면 스프링 시큐리티가 세션에 Userdetails 객체를 저장해놓는다.
스프링의 @AuthenticationPrincipal 어노테이션으로 Userdetails 객체를 가져올 수 있었다.
우리는 Userdetails 를 상속받는 PrinicpalDetails 객체를 사용하고, 이는 필드로 User를 갖기에 User 정보를 사용할 수 있었다.
세션정보의 User를 활용해 회원 수정을 구현하자.
update.jsp 의 뷰이다. 여기에 현재 정보를 입력하려면 어떻게 해야할까?
세션의 User를 모델에 담아 넘긴 후 jsp에서 principal.~ 으로 필드를 접근해 활용하는 방법이다.
모든 뷰에 포함되는 header.jsp에 위 부분을 추가한다.
property를 principal로 하면 var 값으로 Userdetails 객체에 접근할 수 있다.
principal.user.필드명 으로 동적으로 jsp를 변경하면 된다.
1) 제출 버튼 클릭시, JS의 update 메서드를 호출한다. 이 때 User의 id를 넘겨준다.
2) update 메서드. ajax로 form 데이터를 json으로 변환하여 /api/user/${userId}에게 PUT방식으로 전송한다.
3) UserApiController. PutMapping으로 ajax가 전송한 json 데이터를 UserUpdateDto 형태로 받아서 사용한다.
4) UserUpdateDto. Update form에서 온 정보를 저장할 객체이다. User 객체에 넣기 위한 toEntity() 메서드도 존재한다.
5) 수행결과
폼에 입력한 결과가 제대로 UserUpdateDto 에 담겨 출력되는 것을 확인할 수 있다.