【问题标题】:validating the invalid token in expressJWT验证 expressJWT 中的无效令牌
【发布时间】:2021-08-31 23:06:59
【问题描述】:

我使用 express JWT 在我的 API 中添加了一个中间件。现在的问题是当用户发送无效令牌时,我收到错误“未经授权的错误”。我想要的是在用户传递错误令牌时发送并响应用户。

我的 ExpressJWT 中间件

exports.isUserSignedIn = expressJWT({
    secret: process.env.SECRET,
    userProperty: "auth",
    algorithms: ["HS256"],
})

我在路由中使用了这样的中间件

`` router.get("/get/notifications",[isUserSignedIn], getUserNotification)

【问题讨论】:

  • 您是否尝试使用库推荐的错误处理? npmjs.com/package/express-jwt#error-handling
  • 我在文档中看到了代码,但我不知道在哪里添加该代码。
  • 在您定义的最后一个端点之后使用它,该示例只是一个捕获任何 401 错误的中间件,因此您可以自定义响应。

标签: javascript node.js express


【解决方案1】:

您可以使用 JWT 令牌验证方法来验证令牌。

这里是可以处理空令牌和无效令牌的中间件。

exports.checkJWT = (req, res, next) => {
    if (!req.headers.authorization) {
        return res.status(403).json({
            message: 'No credentials sent!'
        });
    } else {
        let bearer = req.headers.authorization;
        let token = bearer.split(" ");
        jwt.verify(token[1], process.env.SECRET, function (err, decoded) {
            if (err) {
                return res.json({
                    message: "Invalid token"
                })
            } else {
                next();
            }
        });
    }
}

你可以像这样在你的路由中使用这个中间件。

router.get("/get/notifications",[checkJWT], getUserNotification)

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 2021-07-28
    • 2012-08-01
    • 2020-11-22
    • 2021-08-10
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多