我有一个使用Hapi.js构建的服务器。我创建了一个插件来限制对某些本地网络IP地址的访问,就像这样:
我想将这个插件应用于仅“/pathA”,同时使“/pathB”和“/pathC”对所有用户可访问。因此,我尝试了以下操作:
exports.register = function (server, options, next) {
server.ext({
type: 'onRequest',
method: function (request, reply) {
console.log(request);
if (
request.info.remoteAddress.indexOf("192.") !== 0 &&
request.info.remoteAddress.indexOf("127.") !== 0
) {
return reply.view('error', {
error: "I DON'T LIKE YOU"
});
}
return reply.continue();
}
});
next();
};
exports.register.attributes = {
pkg: { "name": "localOnly" }
};
我想将这个插件应用于仅“/pathA”,同时使“/pathB”和“/pathC”对所有用户可访问。因此,我尝试了以下操作:
const server = new Hapi.Server();
server.connection({ port: 8000 });
server.register(require('vision'), err => {
if (err) throw err;
server.views(/* removed for brevity */);
server.route({ method: 'GET', path: '/pathB', handler: handlerB });
server.route({ method: 'GET', path: '/pathC', handler: handlerC });
server.register(require('./plugins/localOnly.js'), err => {
if (err) throw err;
server.route({ method: 'GET', path: '/pathA', handler: handlerA });
server.start(/* removed for brevity */);
});
});
但是,似乎我的插件拦截了所有连接。有人能告诉我我做错了什么吗?如果您建议我进行完全重构也没关系。我现在只是在计划应用程序,并想尝试一下 Hapi.js。