Javascript 使用Glue定义Auth策略
我正在使用glue来启动hapi服务器,所以我给了json对象连接和注册的详细信息 我有10条路由,我需要对所有10条路由使用身份验证策略,因此遵循以下步骤 1) 我已经注册了xyz自定义身份验证插件 2) 定义了策略Javascript 使用Glue定义Auth策略,javascript,node.js,hapijs,Javascript,Node.js,Hapijs,我正在使用glue来启动hapi服务器,所以我给了json对象连接和注册的详细信息 我有10条路由,我需要对所有10条路由使用身份验证策略,因此遵循以下步骤 1) 我已经注册了xyz自定义身份验证插件 2) 定义了策略server.auth.strategy('xyz','xyz',{}) 3) 在每个路由级别,我都启用了auth策略 auth: { strategies: ['xyz'], } 我怎样才能在下面一行给配置对象本身加上胶水呢 server.auth.strategy(
server.auth.strategy('xyz','xyz',{})代码>
3) 在每个路由级别,我都启用了auth策略
auth: {
strategies: ['xyz'],
}
我怎样才能在下面一行给配置对象本身加上胶水呢
server.auth.strategy('xyz', 'xyz', { });
Glue.compose(ServerConfig, { relativeTo: baseDir }, (err, server) => {
internals.server = server;
})
这里还有一个问题,在这一行server.auth.strategy('xyz','xyz',{from json file})代码>我正在从配置文件读取JSON数据。当我更改这个JSON文件中的数据时,我不想手动重启服务器来加载修改后的数据。有没有插件或自定义代码可以实现这一点?我找到了一个通用的解决方法,当您想进行Glue不直接支持的安装(AFAIK)时,您也不想继续添加到index.js
在manifest.js
所在的位置创建一个plugins
文件夹
创建一个文件plugins/auth.js
(在本例中)。在这里,您将有一个访问服务器对象的注册回调,您可以进行超出Glue声明性功能的设置调用李>
将指向插件文件的插件项添加到manifest.js
在manifest.js中:
register: {
plugins: [
{
plugin: './plugins/auth',
},
]
}
在plugins/auth.js中:
module.exports = {
name: 'auth',
async register (server) {
await server.register([
require('@hapi/cookie'),
]);
server.auth.strategy('session', 'cookie', {
cookie: {
name: 'sid-example',
password: '!wsYhFA*C2U6nz=Bu^%A@^F#SF3&kSR6',
isSecure: false
},
redirectTo: '/login',
validateFunc: async (request, session) => {
const account = await users.find(
(user) => (user.id === session.id)
);
if (!account) {
return { valid: false };
}
return { valid: true, credentials: account };
}
});
server.auth.default('session');
},
};
(认证设置代码来自以下地址的Hapi文档)
这就是我找到的方法,我可以从manifest.js调用类似于server.auth.strategy()
的东西
注意:Auth不是这种技术的一个很好的例子,因为在lib/Auth/strategies
中有一个用于Auth策略的特殊文件夹。您可以使用nodemon自动重新启动服务器。我回应了主要问题。auth策略设置如何与Glue集成?