没有参数但要求参数的router.get

时间:2019-04-13 08:58:15

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

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

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

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

那么get方法又有什么问题呢?

请参阅上面的链接以获取完整的代码。任何帮助对我来说都非常重要。谢谢!

1 个答案:

答案 0 :(得分:3)

发生此问题是因为在路由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);