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
Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐