基于nodejs+mongodb实现的JWT

Posted xll1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于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
    })
   }
  }

以上是关于基于nodejs+mongodb实现的JWT的主要内容,如果未能解决你的问题,请参考以下文章

重点突破—— Nodejs+Express+MongoDB的使用基础

Nodejs/mongodb - 检查用户是不是具有管理员权限(基于令牌的身份验证)

朴灵:基于MongoDB与NodeJS构建物联网系统

nodejs驱动mongodb 实现数据增删改查

基于NodeJS+Express+mongoDB+Bootstrap的全栈式工程化开发前后端分离博客系统实战

nodejs 操作 mongodb 数据库