jwt是什么? 我们常用的token 又是怎么生成的?

201 阅读1分钟

jwt 是 什么

  • jwt -全名 json web token
  • 用户认证成功后,server 端返回一个加密的token 给客户端
  • 客户端后面每次请求都带token,以表示当前的用户身份

nodeJs 实现 jwt

npm i jsonwebtoken --save-dev

如何使用jwt?

// constants.js
module.exports = {
    SECRET: 'Usdy+976_+qwe'
}

// user.js
const jwt = require('jsonwebtoken')
const { SECRET } = require('./conf.constants)

// 登录将用户的token返回给用户
router.post('/login', async (ctx, next) => {
    const { userName, password } = ctx.request.body
    
    // 登录成功
    /**
     1 返回的用户信息,
    2 加密的密匙
    3 token 存在的时间
    */
    if() {
      let token = jwt.sign(userInfo, SECRET, {expiresIn: 36000})
      ctx.body = {
         token: 'Bearer ' + token  // 名字一定要是Bearer 才能生效
      }
    }
})

获取用户信息

// 将登录获取的token 存起来 传给服务端
// 
const { SECRET } = require('./conf.constants)
const util = require('util') 
// util.promisify 变成一个promise 
const verify = util.promisify(jwt.verify)
router.get('/getUserInfo', async (ctx, next) => {
    // 获取浏览器传过来的 token
   const token =  ctx.header.authorization
   
   try {
       const payload = await verify(token.split(' ')[1], SECRET)
       console.log(payload) // => {userName: 'zhangsan', password: '123456', nickName:'张三'}
       ctx.body = {
           code: 200,
           data: payload 
       }
   } catch (ex) {
       ctx.body = {
           error:201,
           msg: 'TOEKN 过期'
       }
   }
})

总结:以上就是jwt在项目中的使用,解析流程。 原文链接:从前慢的时光驿站