회원인증방법
1. session-based
아이디랑 패스워드로 로그인을 하면, 서버는 쿠키라는 걸 발행한다.
(쿠키 = 브라우저에 저장할 수 있는 긴 문자열)
이 쿠키에는 세션 아이디가 적혀있다.
그럼 브라우저는 쿠키를 저장한다.
이제 로그인 후 활동을 하는데 예를 들어 마이페이지를 보여달라고하면,
쿠키 데이터가 서버로 전송이 되는데, 쿠키에 적힌 세션 아이디를 가지고 (이 사람은 로그인을 했었다는 기록이 담긴)세션 데이터에서 찾아보는 것이다.
만약에 이 세션 데이터에 세션 아이디가 있다면, 마이페이지.html 을 보내줄 것이다.
2. token-based (JWT)(JSON Web Token)
로그인을 할 때 서버는 JSON Web Token 이라는 걸 발행한다.(긴 문자열임)
그럼 브라우저는 이 JWT 를 쿠키나 localstorage 같은 곳에 저장함.
만약 마이페이지를 보여달라고 하면 로그인을 했는지 판단해야겠지?
웹페이지가 서버한테 마이페이지를 보여달라고 요청할 때에 JWT 를 헤더에 포함해서 전송한다.
그럼 서버입장에서는 토큰이 같이 왔으니 토큰이 유효한지 검사를 한다.
만약 적합한 토큰이라면 마이페이지.html을 보내주도록 한다.
가장 큰 특징 : 서버가 메모리 같은 공간에 유저들 로그인 상태를 저장할 필요가 없다. -> 좀 더 RESTful
3. Open Authentication (OAuth)
다른 사이트의 프로필 정보를 가져옴(Facebook 이나 구글의 프로필 정보 등..)
소셜 로그인 버튼을 누르면 계정 정보를 제공하는 걸 동의하는지 뜬다.
동의를 누르면 유저의 소셜 계정 정보가 서버로 전송이 되면
세션을 만들던지, 계정을 만들던지, JWT를 발급하던지.. 하면 된다.
장점 : 서버 입장에서 정보 다룰일 없으니 좋음
단점 : 예전에는 소셜로그인 이렇게 하는 곳 많았는데 소셜서비스가 사라지면 문제
회원 기능이 있다면
- 로그인 했을 때만 글쓰기가 가능해진다.
- 누가 글을 발행했는지 글쓴이를 저장할 수 있다.
- 마이페이지를 만들 수 있다.