我是Express框架的初学者,并且在代码流方面遇到了一些困难。我在app.js中有以下代码
user_id
问题是如果用户输入无效路由假设'/错误',那么我的中间件会发送响应,而不是应用投掷404 Not found。有什么我想念的吗?(看起来很明显)。谢谢你的帮助。
答案 0 :(得分:2)
运行身份验证中间件的方式/位置有几种选择。
1)您可以在定义任何未经过身份验证的路由后立即运行它。这将为您提供任何路由的非身份验证错误,无论它是否为真实路由,而不是用户未经身份验证即可进入的少数路由。
2)您可以手动将中间件添加到应该具有身份验证的每个已定义路由,例如:
app.get('/something', yourAuthMiddleware, yourRouteHandler);
这将仅对实际定义的路由执行auth检查。这允许您为未定义的路由提供404而不是auth错误。
第一个选项的优势(实质上就是你现在的方式)是一个未经过身份验证的用户甚至无法找出定义的路由。如果他们没有经过身份验证,除了他们被允许的几条路线之外,他们根本不会进入。在我看来,这是正确的设计。
第二个选项将允许您为未定义的路由提供404,但它需要手动将auth添加到您定义的每个路由或每个需要auth的路由器。这允许未经过身份验证的用户找出哪些路由已定义,哪些路由未定义。