基于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 - 检查用户是不是具有管理员权限(基于令牌的身份验证)