컴퓨터를 사용하면서 가장 많이 하는 행위는 아마 로그인(+회원가입)일 것이다.
네이버, 카카오톡, 롤 그리고 오래 사용하지 않았던 사이트들에서 계정을 찾는 행동 등
심지어는 핸드폰 FaceID 혹은 패턴까지 말이다.
로그인, 회원가입에서 가장 중요시해야 하는 관점은 권한이라고 생각한다.
(DB, 비밀번호 정규식, 등등 여러 키워드 중에서)
유저가 이용할 모든 것의 준비단계이니 말이다.
구현은 최대한 간단하게 진행한다.
복잡한건 목적에 따라 조금씩 추가하면서 써내려 가면 된다.
목적이 있어야, 그리고 뭘 알아야 뭐라도 쓸 수 있지 않겠는가
서비스를 시작했는데 나의 미성숙한 결과물에 그대로 데이터가 쏟아졌다면 그 결과는 굳이 상상하고 싶지 않다
미들웨어의 역할을 가지게 되는 상태까지 구현을 해보도록 한다.
로그인 구현에서 가져가야할 주제를 생각해보면
1. 로그인, 회원가입 등의 행위를 통해 유저에게 권한을 부여해야 한다.
2. 권한이 일정 시간 동안에 유지되어야 한다.
각각의 번호를 구체화 시켜본다(앞선 글들에서 언급한 육하원칙을 이용하여)
다시 생각해도 육하원칙을 따르는 것은 정말 개발에 도움이 많이 되는 것 같다.
세션은 DB에서 유저 정보가 확인이 되었을 경우 생성하도록 한다.
그리고, 성능이슈를 고려해 세션에는 유저의 id만 저장을 하고 다른 요청이 들어올 시에 나머지 정보를 가져오는 식으로 한다.
예전에는 비밀번호 찾기시 비밀번호를 알려주는 식이었지만, 그건 암호화가 되지 않았거나 양방향으로 되어있는 것이기 때문에 (나는 단방향으로 암호화를 할 것이다) 요즘 트렌드는 링크에 일정 시간을 주어 새로운 비밀번호를 입력하게 하는 식이니까 이때 토큰을 좀 이용해 보겠다
코드는 깃에 올려놓았다.
https://github.com/pjh94/MakeLoginJoin
코드는 3차 프로젝트에서 구현했던 것을 가져왔다.
3차 프로젝트 당시 OPEN API를 사용하면서 요청, 응답 등의 프로세스에 관심이 있었고
데이터베이스 서버를 하나 따로 두어 로그값을 살펴볼 수 있도록 했다.
비동기 요청으로 오고 가고한 것만 참고해서 코드를 보면 좋을 듯 하다.