유저가 로그인을 하려면 우선 회원가입을 해야 한다. 회원가입 프로세스를 간단하게 표현하면 다음과 같다.
DB 정보가 유출되면 회원 정보가 노출될 위험이 있기 때문에, 비밀번호는 단방향 암호화를 하여 DB 정보가 유출되더라도 비밀번호를 알아내지 못하도록 방지해야 한다.
이후 프론트엔드에서 서버에 request를 전달할 때마다 세션 정보를 함께 전달한다. 서버는 request마다 세션 내부에 있는 사용자 ID를 확인해서 DB에서 해당 회원 정보를 가져온다. 회원 정보가 DB에 존재하면 request를 정상 처리하지만 존재하지 않으면 거부한다.
쿠키는 클라이언트 쪽에 저장되므로 안전하지 않다. 따라서 사용자 ID를 암호화하고 22자리의 랜덤 문자열로 구성된 쿠키 비밀번호를 함께 저장한다.
이후 프론트엔드에서 서버에 request를 전달할 때마다 쿠키 정보를 함께 전달한다. 서버는 request마다 쿠키에서 사용자 ID를 꺼내어 복호화하여 회원 정보를 DB에서 조회한다. 쿠키 비밀번호가 DB에 저장된 쿠키 토큰과 동일한지를 확인한다. 동일하다면 request를 정상 처리하지만 동일하지 않다면 거부한다.
쿠키 생존시간을 길게 설정하면 쿠키 정보가 클라이언트 쪽에 오래 남아 있는다. 브라우저를 닫고 다시 열더라도 자동 로그인이 된다.