웹서비스들을 운영할 때 로그인, 회원가입을 구현하는 방법이 몇 가지가 있다.
쿠키로 구현하는 방법 (위험하다. 해커한테 어서 가져가십쇼 하는 꼴)
세션으로 구현하는 방법
외부 서비스를 빌려 Oauth로 구현하는 방법
토큰 방식으로 구현하는 방법. (<-- JWT가 이 방식을 사용한다)
첫 번째 파라미터 token은 이름 그대로 우리가 검증할 토큰이다.
만약 이 토큰이 유효하면 우리는 원하는 decoded data를 반환값으로 얻을 수 있다
두 번째 secretOrPublicKey는 JWT로 생성할 해쉬 생성에 쓰이는 문자열이다.
예시)
1) 동기적으로 진행하는 인증 과정
var decoded = jwt.verify(token, 'shhhhh');
console.log(decoded.foo) // bar
2) 비동기적으로 진행하는 인증 과정
jwt.verify(token, 'shhhhh', function(err, decoded) {
console.log(decoded.foo) // bar
});
3) 동기적으로 확인하는 invalid token
try {
var decoded = jwt.verify(token, 'wrong-secret');
} catch(err) {
// err
}
4) 비동기적으로 확인하는 invalid token
jwt.verify(token, 'wrong-secret', function(err, decoded) {
// err
// decoded undefined
});
verify 함수가 반환하는 것이 decoded 형태인 것은 알것같다
그리고 decoded가 callback의 매개변수로 전달되는 것도.