Global Feathers钩子和事件过滤器

时间:2016-10-07 03:38:47

标签: feathersjs

在Express中,很容易阻止访问所有路由,例如,使用/admin前缀,只需在为该路径下的任何特定端点添加处理程序之前向该路径添加中间件。

在Feathers中,看起来我们必须创建一些常见的钩子模块,并将它们分别添加到我们创建的每个服务中。事件过滤器也是如此。

我发现忘记添加身份验证挂钩或事件过滤器的想法可怕,因为除非我查看了所有服务初始化代码或被黑客攻击,否则我不会注意到错误。从这个意义上说,一个带有某种白名单的Express中间件,我可以轻松实现特殊端点,让我更加安心。

是否有可能在Feathers中做类似的事情?

(P.S。:我刚刚注意到我保护了我的应用程序的REST API,但忘了保护所有实时事件。)

1 个答案:

答案 0 :(得分:2)

自v1.6.0起feathers-hooks支持通过app.hooks在所有服务上运行的应用程序挂钩:

app.hooks({
  before(hook) {
    console.log('Global before hook');
  },

  after(hook) {
    console.log('Global after hook');
  },

  error(hook) {
    console.error(`Error in ${hook.path} method ${hook.method}`, hook.error.stack);
  }
});

有关更多示例,请参阅this blog post about error and application hooks

对于实时事件,新生成器还将尝试创建尽可能安全的默认值(例如,通过生成默认过滤器,显示警告以注册更具体的过滤器)。