快递中间件

时间:2018-04-08 04:35:10

标签: node.js express routes middleware

我是Express框架的初学者,并且在代码流方面遇到了一些困难。我在app.js中有以下代码

user_id

问题是如果用户输入无效路由假设'/错误',那么我的中间件会发送响应,而不是应用投掷404 Not found。有什么我想念的吗?(看起来很明显)。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

运行身份验证中间件的方式/位置有几种选择。

1)您可以在定义任何未经过身份验证的路由后立即运行它。这将为您提供任何路由的非身份验证错误,无论它是否为真实路由,而不是用户未经身份验证即可进入的少数路由。

2)您可以手动将中间件添加到应该具有身份验证的每个已定义路由,例如:

app.get('/something', yourAuthMiddleware, yourRouteHandler);

这将仅对实际定义的路由执行auth检查。这允许您为未定义的路由提供404而不是auth错误。

第一个选项的优势(实质上就是你现在的方式)是一个未经过身份验证的用户甚至无法找出定义的路由。如果他们没有经过身份验证,除了他们被允许的几条路线之外,他们根本不会进入。在我看来,这是正确的设计。

第二个选项将允许您为未定义的路由提供404,但它需要手动将auth添加到您定义的每个路由或每个需要auth的路由器。这允许未经过身份验证的用户找出哪些路由已定义,哪些路由未定义。

相关问题