首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快件连锁路线

快件连锁路线
EN

Stack Overflow用户
提问于 2013-12-18 06:24:20
回答 1查看 6.2K关注 0票数 2

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

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

例如,现有的路线是"/“、"/upload”、"/login“、"/logout”。我希望getpost "/upload“的请求首先由"/login”路由处理,然后由“上传”路由处理。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-18 06:43:38

是的,您可以在一条路线上链接处理程序。处理程序的定义应该类似于

代码语言:javascript
复制
routehandler(req, res, next){
   //send response directly
   //or call next to call the next handler
}

然后,您可以按所需的顺序放置多个处理程序:

代码语言:javascript
复制
app.get('/server', ensureAuthenticated, housekeeping, routes.server.get)

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

请看到,您需要一个不同的处理程序,而不是您所使用的登录。登录页面将进行身份验证,rest页面只需检查用户是否经过身份验证。如果您使用的是会话,则差异很明显。

路由处理程序的args与中间件相同。这些措施是:

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

上面的一个细微的变化是,如果next是回调链中您想要的结束函数,就可以忽略它。除了这些你不能有其他的args。您可以看到它们如何被称为这里 (第154行)。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20651020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档