2016-07-26 3 views
0

У меня есть этот сервер Hapi.js, для которого требуется 2 конечных точки для выполнения Basic auth (с использованием базового модуля hapi-auth-basic). Каждая логика конечных точек для проверки «имени пользователя/пароля» отличается, поэтому я нарушил эти две вещи в своих собственных плагинах.Hapi, js - Правильный способ включения плагина внутри плагина

В настоящее время это, как я регистрации плагинов:

... 
 

 
server.register([Basic, 
 
... 
 
    require('./auth/register-device'), 
 
    require('./auth/sender'), 
 
... 
 
], (err) => { 
 
.... 
 

В то время как это работает, я должен убедиться, что Основной плагин также регистрируется.

Я пытался зарегистрировать Базовый плагин в моих плагинов зарегистрировать метод здесь (который я удалил и переехал в вышеуказанный файл):

https://github.com/salty-pig/Salty-Pig/blob/master/auth/sender.js#L29, но когда я сделал это для обоих плагинов, я получил ошибку что основной плагин уже зарегистрирован.

Я думаю, мне интересно, какая здесь лучшая практика. В моем случае это работает, так как я не распространяю эти плагины «auth».

Вопрос 2 был бы: если бы у меня был плагин, который я хотел сделать в модуле npm, который должен был включить другой плагин, для чего это лучший способ.

благодаря

+0

Не уверен, что это означает: «Я должен убедиться, что основной плагин также зарегистрирован». Вы пытаетесь сделать круговую зависимость между Basic и Sender, не так ли? – estus

+0

Я так не думаю. Плагину отправителя нужен плагин Basic для работы, но для плагина Basic плагин не нужен плагин Sender. Я имел в виду, что для плагинов отправителя и регистрационного устройства мне нужно сначала зарегистрировать основной плагин, я попытался зарегистрировать основной плагин внутри каждого из этих других плагинов, но это значит, что я уже получил ошибку об основном плагине будучи зарегистрированным – lholmquist

+0

Было бы интересно узнать, как это должно быть правильно обработано. Я предполагаю, что поведение настраивается с опцией 'once' [здесь] (http://hapijs.com/api#serverregisterplugins-options-callback),' once' и 'multiple' options [здесь] (http: //hapijs.com/api#plugins). – estus

ответ

2

Если вы пишете плагин, который зависит от других плагинов, вы могли бы использовать Hapi server.dependency API:

exports.register = function (server, options, next) { 
    server.dependency('hapi-auth-basic', function(server, next) { 
    server.register([ 
     // register plugins that depend on hapi-auth-basic here 
    ], (err) => { 
    }); 
    }); 

    next(); 
}; 

Вы можете поставить server.dependency с массивом, чтобы указать несколько зависимостей.

Смежные вопросы