Node (Express)에서 JWT사용 하기

2020. 10. 28. 16:26JWT

방법 : jwt를 생성하여 cookie에 저장을 시켜 유저확인을 할때 마다 쿠키에있는 jwt 값을 가지고 권한을 계속 인증, 확인을 하는 방식

 

jwt 생성, 전달

npm i jsonwebtoken 

 

으로 jsonwebtoken를 설치한다. 

 

 

형식 :  jwt.sign(payload,secretOrPrivateKey, [options, callback])

 

jwt에 비밀키가 무조건 있어야 한다.  jwtSecret라는 변수에 비밀키를 생성 키켜준다.

    jwt.sign({
      email: user.email,
    }, jwtSecret,
    {
      expiresIn: '1d',
      issuer: 'localhost',
      subject: 'user_info'
    })

email = 비공개 클레임으로 개인적으로 만들어주면된다.

jwtSecret =  jwt의 비밀키를 가져온다.

 

등록된 클레임

expiresIn: '1d' = 만료 기간을 나타낸다.  ex) 1d = 1day

issuer: 'localhost' = 발급자명을 써주면 된다.

subject: 'user_info' = 관리자가 알아볼수있게 명칭을 작성해주면된다.

 

이렇게 쓰면 jwt가 완성이 된다. 그러면 jwt를 express에서 cookie안에 넣어서 넘길까?

 

엄청 간단하다.

express에서 쿠키를 만들듯이 해주면된다. 

    const jwtToken = jwt.sign({
      email: user.email,
    }, jwtSecret,
    {
      expiresIn: '1d',
      issuer: 'localhost',
      subject: 'user_info'
    })
    
   //(1)
   res.cookie('user', token, { httpOnly: true, maxAge: 24 * 60 * 60 * 1000})
   //(2)
   res.json(jwtToken)  

 

res.cookie('user', token, { httpOnly: true, maxAge: 24 * 60 * 60 * 1000 }) 로 쿠키를 만들어 주면된다. 

 

또는 vue와 같이 프론트 서버가 운영될때는

res.json(jwtToken)로 jwt만 날려주고 프론트에서 jwt값을 받아서 쿠키에 저장시키면 된다.

 

jwt 복호화(Decoding)   

프론트에서 jwt값을 보내면 안에 내용을 확인하기 하여 내용확인을 하기위해 복호화를 해야한다.

 

형식 : var decoded = jwt.verify(token, secretOrPrivateKey); 

 

const token = req.headers.cookies.user
const tokenResult = jwt.verify(token, jwtSecret)

console.log(tokenResult)

프론트에서 쿠키로 전달한 값을 가지고 복호화 형식에 맞춰 넣어주면 된다. 

여기서 우리가 처음 비밀키를 jwtSecret라는 변수를 복호화를 형식에 맞게 넣어주면된다. 

 

콘솔에 출력하면 우리가 저장했던 값이 나온다. 

 

참고 : www.npmjs.com/package/jsonwebtoken

728x90
반응형

'JWT' 카테고리의 다른 글

JWT 간단한 설명  (0) 2020.10.28