[Fix] 회원 정보 수정시 암호화되지 않은 비밀번호, 아이디 변경?
회원 정보 수정 POST를 하면 DB상에서 암호화된 비밀번호로 저장이 저장이 되지 않는 문제가 있었다.

이전에 회원가입 메서드를 확인해 보니 비밀번호의 암호화는 memberService 메서드 단에서 DB에 정보를 넘기기 전에 암호화하여 저장하였다.
// 수정 전
Optional.ofNullable(member.getPassword())
.ifPresent(password -> findMember.setPassword(password));
// 수정 후
Optional.ofNullable(member.getPassword())
.ifPresent(password->findMember.setPassword(passwordEncoder.encode(password)));
위와 같이 람다식을 이용해 간단하게 암호화된 비밀번호를 저장하도록 수정했다.
업데이트 요청시에 수정된 정보로 DB상에 업데이트는 잘 된다. 그러나 email은 바뀌지 않고 그대로였다.
현재 우리의 웹 애플리케이션에서 이메일은 로그인에 필요한 아이디로 사용된다. 다른 웹을 이용할 때에도
비밀번호나 다른 정보는 바꾸어도 아이디만큼은 바꾸지 않았던 기억이 나 ChatGPT에게 물어보았다.
보안적인 이유로, 웹 애플리케이션에서는 일반적으로 회원의 아이디를 변경할 수 없도록 제한하는 경우가 많습니다. 사용자의 아이디는 보안상 중요한 정보 중 하나이기 때문에, 한 번 등록되면 일반적으로 변경할 수 없게 만들어져 있습니다. 대신, 사용자의 이메일 주소나 전화번호 등 다른 식별자를 변경할 수 있도록 제공하는 경우가 많습니다. 이 경우에는 이전 식별자와 새로운 식별자 간의 중복 여부를 확인하고, 중복되지 않는 경우에만 변경을 허용하는 방식을 사용합니다.
Spring Security에서 내부적으로 아이디로 쓰이는 정보는 수정할 수 없도록 하는 기능이 있지는 않습니다. 하지만 일반적으로 아이디는 회원가입 시에 등록하며, 이후에는 수정되지 않는 경우가 많습니다. 따라서, 아이디를 수정할 수 있는 기능을 구현할 때는 신중하게 검토해야 합니다. 만약 아이디를 수정할 수 있게 한다면, 이에 따른 보안 이슈도
아이디는 보안상의 이유로 잘 바꾸지 않는다고 한다. 또한 한번 만들어진 이메일을 바꾸겠나? 하는 생각이 들어서
email 수정 기능은 빼는 걸로 하였다.. ㅎㅎ
문제를 메꾸어 해결한 느낌이 들지만 어쨌든, 수정사항을 빨리 알아차려서 다행이다.