• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

세션의 데이터에 대해서 질문이 있습니다!

21.06.15 21:10 작성 조회수 112

1

안녕하세요 기선님 강의 강의 항상 잘 듣고 있습니다.

결론적으로 말씀을 드리면 login(account);를 해주지 않아도 프로필상의 닉네임이 정상적으로 변경되는 것에 대한 질문 입니다!

우선 여기서 account 객체는 세션에서 가져온 데이터이고 detached 상태 입니다.

그래서 account.setNickname()을 통해서 세션에서 참조하는 사용자 데이터를 수정했고, accountRepository.save(account)를 통해서 변경 사항을 DB에 또한  merge 시켰습니다.

그렇기 때문에 login(account);를 해주지 않아도 세션의 account 데이터를 수정했기 때문에 변경사항은 반영 되었습니다.

그렇다면 기선님이 login(account); 를 호출해야한다고 말씀하셨던건 어떤 의미에서 말씀하신건지 생각을 해봤습니다.

login(account) 메서드를 실행할 때 내부적으로  UserAccount를  생성하고, 그 과정에서 User 생성자에 인증 정보로 nickname과 password를 설정해주고 있습니다.

만약 기선님 말씀대로 login(account); 까지 실행을 해주면 새로운 인증 정보를 생성하니까 UserAccount 상위 클래스의 User 의 인증정보로 변경된 username(nickname)을 설정할 수 있게 됩니다.

하지만 제가 한 방식대로 login(account);를 실행하지 않으면 세션의 UserAccount 내부의 acocunt의 nickname은 변경되었지만, UserAccont의 User의 인증정보로 사용되는 username은 변경되지 않을 것입니다. 

이러한 이유에서 새로 login() 메서드를 호출하셨다고 이해하면 되는 걸까요?

항상 질문에 대한 좋은 답변 감사합니다 :)

답변 1

답변을 작성해보세요.

0

네 맞습니다. 별다른 로그인 로직을 사용할 필요가 없다면 김세진님께서 하신 방법으로만 해도 충분할 겁니다.

김세진님의 프로필

김세진

질문자

2021.06.19

답변 감사합니다!! :)