我正在尝试使用 express nodejs 和 JWT。这是我所经历的源代码:link .
我保护所有路由,除了我在 jwt.js 文件中声明的路由。
'/trial'
url 不 protected 。 Controller 位于trial.controller.js
文件中。当我在 postman 中使用get
和post
方法并且没有任何身份验证(No Auth
)时,我得到了我想要的期待。- 但是,当我点击
'/users/testdata'
时,同样的事情不会发生。它不 protected ,但如果我使用get
方法访问它并且没有任何身份验证,它会返回error 500
并显示消息“Cannot read property 'sub' of未定义”
在 postman 中。但是,当我使用post
方法点击它时,我得到了我期望的结果。
那么,get
方法有什么问题呢?
请参阅上面的链接以获取完整代码。任何帮助对我来说意义重大。谢谢!
最佳答案
出现问题是因为路由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);
关于javascript - router.get 没有参数但要求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663749/