首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未使用express-jwt获取req.user对象

未使用express-jwt获取req.user对象
EN

Stack Overflow用户
提问于 2020-10-09 00:26:29
回答 2查看 224关注 0票数 1
代码语言:javascript
复制
exports.requireSignin = expressJwt({
   secret: process.env.JWT_SECRET,
   algorithms: ["HS256"], 
   userProperty: "auth"
 });

我正在使用它访问一条用于测试的秘密路由,但是我在路由here.It结果中没有获得req.user属性,结果是一个空对象(未定义)。

代码语言:javascript
复制
router.get("/secret",requireSignin,(req, res) => {
    res.json({
        message: req.user,
        
    });
   
});

我正在使用Postman测试并发送带有授权头的令牌作为持有者令牌。

EN

回答 2

Stack Overflow用户

发布于 2020-10-09 01:45:05

您没有验证/解码来自请求的JWT令牌,解码后,为其分配req对象并调用next()

代码语言:javascript
复制
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中获取令牌有效负载对象的通用答案。希望它能在未来帮助一些人。

票数 0
EN

Stack Overflow用户

发布于 2020-10-17 07:41:07

我也被这个练习卡住了。要解决此问题,请使用req.auth,如下所示:

代码语言:javascript
复制
router.get("/secret",requireSignin,(req, res) => {
    res.json({
        user: req.auth,
    });
   
});

我希望它是有用的。祝好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64266762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档