快递中间件
Express Middleware
我是 Express 框架的初学者,在代码流方面遇到了一些困难。我在 app.js
中有以下代码
app.use('/', index);
app.use('/login', login);
app.use(require('./routes/authenticate_user'))
app.use('/user', userDetails);
问题是,如果用户输入无效路由假设“/错误”,那么我的中间件会发送响应,而不是应用抛出 404 Not found。有什么我想念的吗?(看起来很明显)。感谢您的帮助。
how/where您运行身份验证中间件有几个选择。
1) 在定义任何 non-authenticated 路由后,您可以立即 运行 它。这会给你一个 non-auth 任何路线的错误,无论它是否是真实的路线,除了允许用户在没有身份验证的情况下进入的几条路线。
2) 您可以手动将中间件添加到每个应该具有身份验证的已定义路由,例如:
app.get('/something', yourAuthMiddleware, yourRouteHandler);
这将 运行 仅对实际定义的路由进行身份验证检查。这允许您为未定义的路由提供 404 而不是身份验证错误。
第一个选项(基本上就是您现在拥有的)的优点是 non-authenticated 用户甚至无法找出哪些路由已定义或未定义。如果他们未通过身份验证,则除了允许他们进入的几条路线外,他们根本无法进入。在我看来,这是正确的设计。
第二个选项可让您为未定义的路由提供 404,但它需要手动向每条路由或您定义的每个需要授权的路由器添加授权。这允许 non-authenticated 用户找出哪些路由已定义,哪些未定义。
我是 Express 框架的初学者,在代码流方面遇到了一些困难。我在 app.js
中有以下代码app.use('/', index);
app.use('/login', login);
app.use(require('./routes/authenticate_user'))
app.use('/user', userDetails);
问题是,如果用户输入无效路由假设“/错误”,那么我的中间件会发送响应,而不是应用抛出 404 Not found。有什么我想念的吗?(看起来很明显)。感谢您的帮助。
how/where您运行身份验证中间件有几个选择。
1) 在定义任何 non-authenticated 路由后,您可以立即 运行 它。这会给你一个 non-auth 任何路线的错误,无论它是否是真实的路线,除了允许用户在没有身份验证的情况下进入的几条路线。
2) 您可以手动将中间件添加到每个应该具有身份验证的已定义路由,例如:
app.get('/something', yourAuthMiddleware, yourRouteHandler);
这将 运行 仅对实际定义的路由进行身份验证检查。这允许您为未定义的路由提供 404 而不是身份验证错误。
第一个选项(基本上就是您现在拥有的)的优点是 non-authenticated 用户甚至无法找出哪些路由已定义或未定义。如果他们未通过身份验证,则除了允许他们进入的几条路线外,他们根本无法进入。在我看来,这是正确的设计。
第二个选项可让您为未定义的路由提供 404,但它需要手动向每条路由或您定义的每个需要授权的路由器添加授权。这允许 non-authenticated 用户找出哪些路由已定义,哪些未定义。