2016-10-14 89 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);