2016-10-14 55 views
0

我使用Bell进行Meetup OAuth,然后使用hapi-auth-cookie进行持久化。hapi-auth-cookie在重定向铃声后不立即设置cookie

以下是代码的相关部分。

server.auth.strategy('session', 'cookie', { 
    cookie: 'sessionid', 
    password: '32_char_password', 
    // redirectTo: '/login', //this causes a loop immediately after allowing access 
    redirectTo: false, 
    isSecure: false, 
}); 

server.auth.strategy('meetupauth', 'bell', { 
    provider: 'meetup', 
    password: '32_char_password', 
    isSecure: false, 
    providerParams: { 
     set_mobile: 'on' 
    }, 
    clientId: 'client_id', 
    clientSecret: 'client_secret', 
}); 

server.route({ 
    method: ['GET'], 
    path: '/login', 
    config: { 
     auth: 'meetupauth', 
     handler: (request, reply) => { 

      request.cookieAuth.set({ 
       sid: request.auth.credentials.profile 
      }); 

      return reply.redirect('/user'); 
     } 
    } 
}); 

server.route({ 
    method: 'GET', 
    path: '/user', 
    config: { 
     auth: 'session', 
     handler: (request, reply) => reply('My Account'), 
    } 
}); 

该代码工作正常,除了在允许访问Meetup之后立即执行。一旦允许访问,/login页面将重定向至/user。没有重定向回登录页面,我得到一个401,并且在我重新加载/user之后,cookie就在那里。一旦我获得了访问权限,它就可以正常工作。只是最初的允许。发生什么事?

回答

1

尝试 “isSameSite” 变量设置为 “宽松的” 值

const options = { 
    connections: { 
     state: { 
      isSameSite: 'Lax' 
     } 
    } 
}; 

const server = new Server(options);