#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()