基于nodejs+mongodb实现的JWT

在用户登入时进行token的生成

// 登录
router.post('/login', function (req, res) {
  User.find({ 'username': req.body.username }, function (err, data) {
    // 执行成功的时候
    if (!err) {
      // 判断有没有找到当前用户
      if (data.length > 0) {
        if (data[0].password == req.body.password) {
          var token = jwt.sign({ _id: data[0]._id, username: data[0].username }, 'xu l l', {
            expiresIn: 60 * 60 * 24 //token过期时间 1h
          })
          res.send({
            message: '登录成功',
            "token": token,
            id: data[0]._id,
            userName: data[0].username
          })
        } else {
          res.send({
            message: '密码错误',
            success: false
          })

      }
    }
    else {
      res.send({
        message: '用户名错误',
        success: false
      })
    }
  }
  })
});

访问其它接口需要携带token

// 修改用户名
router.post('/editUsername', authMiddle, function (req, res, next) {
  User.updateOne({ _id: req.body.uId }, { $set: { username: req.body.message } }, function (err, data) {
    res.send({
      success: true
    })
  })
})

关于toekn的验证函数

// 权限判断的中间件
var authMiddle = function (req, res, next) {
  var result = auth(req)
  if (!result) {
    res.send({
      success: false,
      msg: "token错误"
    })
  }
  try {
    var decoded = jwt.verify(result.name, 'xu l l')
    next()
   } catch (error) {
    res.send({
      success: false,
      msg: error
    })
   }
  }

猜你喜欢

转载自www.cnblogs.com/xll1/p/12820243.html