nodejs 使用jsonwebtoken进行权限验证

用session的方式不好实现跨域的权限验证。token保存在客户端,服务端只做token的签发和token的验证,所以jsonwebtoken可以实现跨域的权限验证。

在nodejs项目中封装一个使用jsonwebtoken进行token签发和token验证的模块。

// 导入jsonwebtoken
const jwt = require('jsonwebtoken')

// 本地的密钥,随便定义
const PRIVATEKET = 'huangweizhi'
// token过期时间
const TIME = 60*60*6

// 生成token
exports.sign = (req) => {
  // 要生成token的主题信息
  let content = {username: req.body.username}
  // 加密的key(密钥)
  let privateKey = PRIVATEKET

  let token = jwt.sign(content, privateKey, {
    // 过期时间(秒)
    expiresIn: TIME
  })

  return token
}

// 验证token
exports.verify = (token) => {
  return new Promise((resolve, reject) => {
    // 加密的key(密钥)
    let privateKey = PRIVATEKET
    
    jwt.verify(token, privateKey, (err, decode) => {
      if (err) {
        // 验证不通过(token过期或错误)
        resolve(false)
      } else {
        // 验证通过,decode包含主题信息、token过期时间
        resolve(decode)
      }
    })
  })
}

你可能感兴趣的:(nodejs,服务器,安全,http)