1

在 Express 中,很容易阻止对所有以/admin前缀开头的路由的访问,只需在该路径下添加任何特定端点的处理程序之前向该路径添加一个中间件即可。

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

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

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

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

4

1 回答 1

3

从 v1.6.0feathers-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);
  }
});

有关更多示例,请参阅有关错误和应用程序挂钩的博客文章

至于实时事件,使用了通道,它提供了一种仅将事件发送给应该看到它们的客户端的安全方式。

于 2016-10-07T16:03:12.760 回答