大家好,又见面了,我是你们的朋友全栈君。
//登陆时注册token
db.query(`select * from user where name=${
username} and password='${
password}'`, (result) => {
if (result.length == 1) {
//jwt.sign({userId:result[0].id} 在注册的时候加入用户id
const token = jwt.sign({
userId:result[0].id}, 'buddha', {
expiresIn: 60 * 60 * 24// 授权时效24小时
});
jwt.verify(token, 'suiyi', function(err, decoded) {
let accessToken=decoded;
accessToken.token=token;
accessToken.id=result[0].id;
accessToken.name=result[0].name;
res.send({
"status": "success",
"data": [accessToken]
});
});
} else {
return next(createError(400, '账号或密码错误'));
}
})
创建一个检查是否登录的中间件,此时就会看到用户id
var createError = require('http-errors');
var jwt = require('jsonwebtoken')
module.exports =(req, res, next)=>{
// 拿取token 数据 按照自己传递方式写
var token = req.body.token || req.query.token || req.headers['token'];
if (token) {
// 解码 token (验证 secret 和检查有效期(exp))
jwt.verify(token, 'suiyi', function(err, decoded) {
if (err) {
return res.status(400).send(next(createError(400, '无效的token')));
} else {
// 如果验证通过,在req中写入解密结果
console.log(decoded)//{ userId: 31, iat: 1574244315, exp: 1574330715 }
req.decoded = decoded;
next();
}
});
} else {
return res.status(403).send(next(createError(403, '没有找到token')));
}
};
最后 req.decoded.userId即可获取用户id
exports.collect_article = async (req, res, next) => {
console.log(req.decoded.userId)
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129561.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...