Глобальные перехваты перьев и фильтры событий

#feathersjs

#feathersjs

Вопрос:

В Express очень легко заблокировать доступ ко всем маршрутам, начинающимся, скажем, с /admin префикса, просто добавив промежуточное программное обеспечение к этому пути, прежде чем добавлять обработчики для любых конкретных конечных точек под этим путем.

Похоже, что в Feathers нам нужно создать несколько общих модулей хуков и добавить их в каждый созданный нами сервис по отдельности. То же самое касается фильтров событий.

Я нахожу мысль о том, чтобы забыть добавить перехват аутентификации или фильтр событий, пугающей, потому что я бы не заметил ошибку, если бы не просмотрел весь код инициализации службы или не был взломан. В этом смысле промежуточное ПО Express с каким-то белым списком, которое я могу легко реализовать для исключительных конечных точек, дает мне гораздо больше спокойствия.

Возможно ли сделать что-то подобное в Feathers?

(PS: я только что заметил, что защитил REST API своего приложения, но забыл защитить все события в реальном времени).

Ответ №1:

Начиная с версии 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);
  }
});
  

Дополнительные примеры см. В Этом сообщении в блоге об ошибках и перехватах приложений.

Что касается событий в реальном времени, используются каналы, которые обеспечивают безопасный способ отправки событий только тем клиентам, которые должны их видеть.

Комментарии:

1. доступно ли app.hooks для версии v2.0.3? Я пытался, но, похоже, это не работает.

2. Я хочу добавить авторизацию для всех служб, auth.hooks.restrictToAuthenticated()