将钩子应用于某些路由节点.js
Apply hook to certain routes Node.js
我正在使用Node.js构建一个应用程序。我编写了一个身份验证中间件,我希望将其应用于除/index 和/login 路由之外的所有路由。有没有办法防止钩子应用于我的/index 和/login 路由?我当前的代码:
我的app.js
:
var middleware = require('./methods/authentication.js');
app.use(middleware.authenticate) //this makes it apply to ALL routes
我的authentication.js
:
module.exports = {
authenticate: function(req, res, next) {
var cookie = parseCookie.parseCookie(req.headers.cookie);
user.returnUser(cookie, function(result) {
if(result.length > 1) {
next();
} else {
res.redirect('/login');
}
});
}
}
任何建议将不胜感激...提前感谢!
您可以插入一个查看路由的填充程序,并且仅在路径不是您的例外之一时才调用身份验证函数:
app.use(function (req, res, next) {
if (req.path === "/index" || req.path === "/login") {
next();
} else {
middleware.authenticate(req, res, next);
}
});
下面是一个使用Map
对象的版本,该对象更容易扩展到更长的路径列表:
var ignorePaths = new Map(["/index", "/login"]);
app.use(function (req, res, next) {
if (ignorePaths.has(req.path)) {
next();
} else {
middleware.authenticate(req, res, next);
}
});
相关文章:
- 节点J的路由不工作
- 所有可能的路由给定特定的节点,返回到起始节点
- 在节点快速路由中使用句点时获取 403
- REST路由多个文件节点js
- 带斜杠-中断路由的节点JS路由参数
- 节点-如何在POST路由中间件中访问请求
- 节点 JS 路由 URL 冲突
- 节点.js解析路由的最小函数
- Visual Studio Code - 如何调试节点.js路由
- 定义节点 js 的模式路由
- 节点.js和 URL 终结点中的多个路由
- 在节点中设置基于文件系统的路由
- 更改路由并更新对节点服务器的 ajax 请求的视图
- 将钩子应用于某些路由节点.js
- 节点.js路由继承
- 节点错误:“;找不到模块'路由'&”;
- 节点中具有express框架的动态路由
- 如何在节点 + Ember 应用程序中处理路由
- 来自同一应用程序内部的调用节点路由
- angular js路由中提供的TemplateURL是't从节点获取响应时加载所需的文件