gpt4 book ai didi

node.js - Express 中的路线链接

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:54 26 4
gpt4 key购买 nike

我有一个简单的应用程序,是在 Node.js 和 Express 的帮助下构建的。这个应用程序有多个路线和基本的登录/注销机制。如果用户未登录,我希望所有路由都重定向到登录表单。这可以通过在每个路由文件中插入身份验证检查器行来完成。

问题是:是否可以链接路由以通过登录检查器路由推送所有请求,然后将其传递给请求的请求,而不向现有路由文件写入任何内容?

例如现有的路由是“/”、“/upload”、“/login”、“/logout”。我希望获取发布“/upload”的请求首先由“/login”路由处理,然后由“upload”路由处理。

最佳答案

是的,您可以在路由中链接处理程序。您的处理程序定义应该类似于

routehandler(req, res, next){
//send response directly
//or call next to call the next handler
}

然后您可以按照您想要的顺序放置多个处理程序:

app.get('/server', ensureAuthenticated, housekeeping, routes.server.get)

这里ensureAuthenticatedhousekeeping不发送响应,只需调用next()。最后一个返回结果页面。

请注意,您需要一个与登录所使用的处理程序不同的处理程序。登录页面将进行身份验证,其余页面应仅检查用户是否通过身份验证。如果您使用 session ,差异将会很明显。

<小时/>

路由处理程序的参数与中间件的参数相同。这些是:

  1. (err, req, res, next) 错误处理程序
  2. (req, res, next) 非错误处理程序

上面的一个小变化是,如果 next 是您想要在回调链中的结束函数,则可以省略它。除了这些之外,你不能有其他参数。你可以看到他们是如何被称为here (第 154 行)。

路由由方法、路由匹配和回调数组组成。与中间件一样,回调链针对特定路由顺序执行,直到返回响应或抛出错误。

关于node.js - Express 中的路线链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20651020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com