exports.requireSignin = expressJwt({
secret: process.env.JWT_SECRET,
algorithms: ["HS256"],
userProperty: "auth"
});我正在使用它访问一条用于测试的秘密路由,但是我在路由here.It结果中没有获得req.user属性,结果是一个空对象(未定义)。
router.get("/secret",requireSignin,(req, res) => {
res.json({
message: req.user,
});
});我正在使用Postman测试并发送带有授权头的令牌作为持有者令牌。
发布于 2020-10-09 01:45:05
您没有验证/解码来自请求的JWT令牌,解码后,为其分配req对象并调用next()
const JWT = require('jsonwebtoken')
module.exports.requireSignin = (req, res, next) => {
const token = req.headers.authorization
if (!token) {
res.status(400).json({ status: false, message: 'Token required' })
}
JWT.verify(token, process.env.JWT_SECRET, (err, decoded) => {
if (err) {
console.log(`JWT: ${err.message}`)
return res
.status(401)
.json({ status: false, error: 'Token is not valid' })
}
req.user = decoded
next()
})
}哦,你正在使用express-jwt包。一开始我没有看到我的答案是关于如何在req中获取令牌有效负载对象的通用答案。希望它能在未来帮助一些人。
发布于 2020-10-17 07:41:07
我也被这个练习卡住了。要解决此问题,请使用req.auth,如下所示:
router.get("/secret",requireSignin,(req, res) => {
res.json({
user: req.auth,
});
});我希望它是有用的。祝好运。
https://stackoverflow.com/questions/64266762
复制相似问题