Javascript 路由器中的Hapijs会话

Javascript 路由器中的Hapijs会话,javascript,node.js,authentication,session-cookies,hapijs,Javascript,Node.js,Authentication,Session Cookies,Hapijs,是否有一种方法可以跨Hapijs服务器路由中的不同路由使用会话信息,该信息在用户成功登录时从数据库加载用户数据 index.js manager.js 我建议你用 在应用程序设置中,您可以按如下方式进行配置: server.register(require('hapi-auth-cookie'), function (err) { if (err) { console.error(err); } server.auth.strategy('session'

是否有一种方法可以跨Hapijs服务器路由中的不同路由使用会话信息,该信息在用户成功登录时从数据库加载用户数据

index.js manager.js 我建议你用

在应用程序设置中,您可以按如下方式进行配置:

server.register(require('hapi-auth-cookie'), function (err) {
    if (err) {
        console.error(err);
    }
    server.auth.strategy('session', 'cookie', {
        password: 'aReallyBigSecret',
        cookie: 'sid-ws',
        redirectTo: '/login',
        isSecure: false
    });
});
然后,在路由中,您可以将其配置为使用身份验证:

method: 'GET',
path: '/aRoute',
handler: function (request, reply) {
    console.log('request.auth.credentials');
},
config: {
    auth: 'session'
}
要最初创建会话,您需要某种方式为会话设置一些数据:

method: 'POST',
path: '/sessions',
handler: function (request, reply) {
    var account = {id: 'userId', username:"hapiUser", accountType:"admin"};
    request.auth.session.set(account);
    return reply(account);
}

这显然是不安全的;您需要对某种数据库进行某种查找,以实际验证您的用户。

是否可以在会话中设置自定义值。比如{username:“hapiUser”,accountType:“admin”}?我用一个简单的
POST/sessions
option更新了我的答案。我了解这一点以及数据库查找的部分。然而,在尝试类似的方法时,我发现会话并没有被数据填满。下面是一个示例-{“isAuthenticated”:true,“credentials”:{“id”:“hapi”,“password”:“pass”,“name”:“hapi User”,“accountType”:“admin”},“artifacts”:{“id”:“hapi”,“password”:“pass”,“name”:“hapi User”,“accountType”:“admin”},“session”:{},“mode”:“try”,“strategy”:“session”}您是否尝试过
请求.auth.session set(key,value)method: 'GET',
path: '/aRoute',
handler: function (request, reply) {
    console.log('request.auth.credentials');
},
config: {
    auth: 'session'
}
method: 'POST',
path: '/sessions',
handler: function (request, reply) {
    var account = {id: 'userId', username:"hapiUser", accountType:"admin"};
    request.auth.session.set(account);
    return reply(account);
}