koa中生成jwk令牌

  1. 執行npm i jsonwebtoken --save 安裝第三方庫
  2. 在util.js中引用,並添加token生成函數
    在config.js中添加全局變量
security:{
    secretKey: 'pdooawjjypomqynn',
    expiresIn: 60*60 // 令牌的過期時間
  }

util.js

const jwt = require('jsonwebtoken')
// 生成token
const generateToken = function(uid, scope){
    const secretKey = global.config.security.secretKey
    const expiresIn = global.config.security.expiresIn
    const token = jwt.sign({
        uid,
        scope
    },secretKey,{
        expiresIn
    })
    return token
}



module.exports = {
    findMembers,
    generateToken,
}
  1. 在token.js api文件中使用token生成函數
const {generateToken} = require('../../../core/util')
router.post('/', async (ctx)=>{
  const v = await new ValidationToken().validate(ctx)

  let token;
  // 根據不同的登錄方式,返回客戶端不同的信息
  switch (v.get('body.type')) {
    case LoginType.USER_EMAIL:
      token = await emailLogin(v.get('body.account'), v.get('body.secret'))
      break;
    case LoginType.USER_MINI_PROGRAM:

      break;
    default:
      throw new ParameterException('沒有相關處理函數')
      break;
  }
  ctx.body = {
    token
  }
})
// 比對客戶端傳遞的用戶名和密碼是否與數據庫中的一致,如果一致就頒佈令牌
async function emailLogin(account, secret){
  const user = await User.verifyEmailPassword(account, secret)
  return generateToken(user.id, 2)
}

module.exports = router
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章