我有一个简单的应用程序,在node.js和express的帮助下构建。这个应用程序有多个路径和基本的登录/注销机制。如果用户没有登录,我希望所有路由都重定向到登录表单。这可以通过在每个路由文件中插入auth检查行来完成。
的问题是:是否可以通过登录检查器路由将所有请求链接起来,然后将其传递给请求的路径,而不向现有的路由文件写入任何东西?
例如,现有的路线是"/“、"/upload”、"/login“、"/logout”。我希望get或post "/upload“的请求首先由"/login”路由处理,然后由“上传”路由处理。
发布于 2013-12-18 06:43:38
是的,您可以在一条路线上链接处理程序。处理程序的定义应该类似于
routehandler(req, res, next){
//send response directly
//or call next to call the next handler
}然后,您可以按所需的顺序放置多个处理程序:
app.get('/server', ensureAuthenticated, housekeeping, routes.server.get)在这里,ensureAuthenticated和housekeeping不发送响应,只需调用next()。最后一个返回结果页。
请看到,您需要一个不同的处理程序,而不是您所使用的登录。登录页面将进行身份验证,rest页面只需检查用户是否经过身份验证。如果您使用的是会话,则差异很明显。
路由处理程序的args与中间件相同。这些措施是:
上面的一个细微的变化是,如果next是回调链中您想要的结束函数,就可以忽略它。除了这些你不能有其他的args。您可以看到它们如何被称为这里 (第154行)。
路由由方法、路由匹配和回调数组组成.与中间件一样,回调链将针对特定路由依次执行,直到返回响应或抛出错误为止。
https://stackoverflow.com/questions/20651020
复制相似问题