유저는 로그인을 하고 웹서핑을 한다. 하지만 페이지가 새로고침 될 때 마다 로그인을 새로 해야한다면? 얼마나 번거로운 일이지 아니한가? 그래서 로그인 한 유저가 일정기간 웹사이트를 더 이상 로그인 없이 자유롭게 쓸 수 있게 하기위해 티켓을 발행한다. 그것이 바로 TOKEN 이다.
세션 토큰은 서버와 클라이언트 둘다 이 티켓에 대한 정보를 가지고 있다. 따라서 클라이언트가 서버에 토큰을 보낼 때 마다 서버는 서버에 이 토큰정보를 발급한 적 있는지 확인한 후 패스시킨다.
단점은 유저가 많아질수록, 발급된 토큰이 많아질 수록, 서버가 힘들어한다.
클라이언트에게 발급을 해주긴 하지만 서버가 정보를 저장하진 않는다. 클라이언트는 들고 있다가, 서버에 토큰을 보내면 서버는 이를 해독해보고 안에 들어가 있는 유저정보와 유효기간을 통해 토큰이 누구껀지, 유효한지 그때 그때 확인한다.
단점은 누군아 이 토큰을 훔쳐서 해독하면 유저정보를 알 수 있다는 것이다.
따라서 너무 많은 유저정보를 토큰에 넣지 않기+복잡한 시크릿 키 쓰기+짧은 유효기간을 통해 토큰을 자주 새로 발급해주는게 좋다.