【问题标题】:Cannot get /api/users/logout direction in NodeJS/express无法在 NodeJS/express 中获取 /api/users/logout 方向
【发布时间】:2019-06-28 15:43:43
【问题描述】:

我正在尝试使用基于令牌的身份验证来实现注册/登录应用程序。我正在使用 NodeJS 的 JWT/express 模块。一切正常,例如登录并在登录后到达其他路线。但是,我无法注销。我尝试了获取/发布/请求,但我仍然得到了这个:

Cannot GET /api/users/logout

Cannot POST /api/users/logout

本地主机的状态是 404:未找到,这是我的代码

router.post(`/logout`,  (req,res,next) =>{

    if(myToken !== ""){

        jwt.verify(myToken, `privatekey`, function(err, decoded) {
            if (err) {
                return res.json({ success: false, message: 'Token is not valid anymore' });
            } else {
               routes
                req.decoded = decoded;
                next();
            }
        });
    } else {
        res.send(400,`You are not logged in!`);
    }
});

myToken 是我登录后用来保存 jwt 令牌的变量。

【问题讨论】:

  • 那是因为端点/api/users/logout不可用。请重新检查您的中间件路由/api/users。我也怀疑你是怎么得到myToken的。我相信您需要从 req.headers (最佳实践)或 req.body (不是那么好,但会完成这项工作)中获得它。谢谢
  • 类似地,我也看到有些人将令牌作为路径参数传递,例如/api/users/logout/your_jwt_token,如果是这种情况,那么您需要在路由文件中更新/logout/:token。如果您仅在 /logout 路由上将令牌作为路由参数传递,这也将导致无法 GET|POST /api/users/logout
  • 请在问题中发布您如何使用router,例如app.use('/api/user', router) 或其他内容。
  • 对于第一条评论,有一个中间件功能,并且端点可用。我只是想尝试将令牌保留在里面。但是,我通过重新安排后期操作的顺序解决了问题,但我无法获得逻辑,为什么它会起作用?

标签: node.js express jwt


【解决方案1】:

我在我的一个节点应用程序中遇到了类似的问题。它发生是因为我输入了错误的 url,例如我输入了 http://localhost:3000/logout 而不是输入 http://localhost:3000/logut。确保您的情况没有语法错误。

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2023-03-19
    • 1970-01-01
    • 2022-01-10
    • 2022-01-24
    相关资源
    最近更新 更多