【问题标题】:router.get without parameter but asking for paramrouter.get 不带参数但要求参数
【发布时间】:2019-09-03 22:25:28
【问题描述】:

我正在尝试使用 express nodejs 和 JWT。这是我经历过的源代码:link

我保护所有路由,除了我在 jwt.js 文件中声明的路由。

  1. '/trial' url 不受保护。控制器位于trial.controller.js 文件中。当我使用getpost 方法并且没有任何身份验证(No Auth)在邮递员中点击网址时,我得到了我的期望。
  2. 但是,当我点击'/users/testdata' 时不会发生同样的事情。它不受保护,但如果我使用get 方法并且没有任何身份验证,它会在邮递员中返回error 500 和消息"Cannot read property 'sub' of undefined"。但是,当我使用 post 方法实现它时,我得到了我所期望的结果。

那么,get 方法有什么问题?

完整代码请查看以上链接。任何帮助对我来说意义重大。谢谢!

【问题讨论】:

    标签: javascript node.js express jwt express-jwt


    【解决方案1】:

    出现问题是因为路由router.get('/:id', getById); 是在路由router.get('/testdata', getTest); 之前定义的。因此,当您对/testdata 路由执行请求时,它由/:id 路由处理,这需要身份验证才能工作,并使用currentUser.sub 属性,尽管currentUser 变量当前未定义。

    只需更改顺序

    router.get('/:id', getById);
    router.get('/testdata', getTest);
    

    router.get('/testdata', getTest);
    router.get('/:id', getById);   
    

    【讨论】:

    • 哦,伙计,多么愚蠢的错误哈哈。这就是我喜欢编程的原因。谢谢你,乔治!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多