为什么request.auth.session未定义?

时间:2016-11-09 13:45:21

标签: cookies session-cookies hapijs

我使用bell和另一个使用hapi-auth-cookie创建了一个auth策略。但是,当我尝试设置会话时request.auth.session未定义。有人能帮我弄清楚我哪里出错吗?

我的路线:

module.exports = [
  {
    method: 'GET',
    path: '/create-an-account',
    config: {
      auth: {
        strategy: 'auth0',
        mode: 'try'
      }
    },
    handler: function(request, reply) {
      var credentials = request.auth.credentials;
      request.auth.session.set(credentials);
      return reply.view('create-an-account');
    }
  }
]

我的身份验证策略:

exports.register = function (server, options, next) {
  server.register([Bell, Cookie], function (err) {

    server.auth.strategy('auth0', 'bell', {
        provider: 'auth0',
        config: {
          domain: process.env.AUTH0_CLIENT_DOMAIN,
        },
        password: 'cookie_encryption_password_secure',
        clientId: process.env.AUTH0_CLIENT_ID,
        clientSecret: process.env.AUTH0_CLIENT_SECRET,
        isSecure: false     // For developing locally
    });

    server.auth.strategy('session', 'cookie', {
      password: 'cookie_encryption_password_secure',
      cookie: 'sid',
      redirectTo: '/create-an-account',
      redirectOnTry: false,
      isSecure: false
    });
  });
  return next();
};

1 个答案:

答案 0 :(得分:2)

我们之前在其中一个项目中遇到过这个问题。 Hapi-auth-cookie已更改其文档,因此他们更长时间使用request.auth.session.set(credentials);

这里是link to the commit

如果您将该行更改为request.cookieAuth.set(),则应该有效。很多在线的例子似乎都使用了旧的例子,这是我们第一次错过它的方式。

这也是在另一个SO答案中获得的> request.auth.session.set(user_info) not working HapiJS