Hapi.js Bell/ Петля перенаправления Auth-Cookie
Я пытаюсь настроить google auth для проекта Hapi.js и не могу понять, почему после входа в систему я получаю петлю перенаправления на маршрут входа в систему.
Это происходит только в том случае, если пользователь еще не вошел в свою учетную запись Google или еще не предоставил приложению разрешение на доступ к его информации.
Это код авторизации
server.auth.strategy('session', 'cookie', true, {
password: 'private_key',
redirectTo: '/login/google'
});
server.auth.strategy('google', 'bell', {
provider: 'google',
password: 'private_key',
clientId: 'client_id',
clientSecret: 'client_secret',
location: 'same_origin_registered_with_google'
});
И это мои два маршрута
server.route({
method: ['GET', 'POST'],
path: '/login/google',
config: {
auth: {
strategy: 'google',
mode: 'try'
},
plugins: { 'hapi-auth-cookie': { redirectTo: false } },
handler: (request, reply) => {
if (!request.auth.isAuthenticated) {
return reply('Authentication failed due to: ' + request.auth.error.message);
}
let creds = request.auth.credentials;
request.cookieAuth.set({
token: creds.token,
userId: creds.profile.id
});
return reply.redirect('/');
}
}
});
server.route({
method: 'GET',
path: '/',
handler: (request, reply) => {
return reply('hello');
}
});
Отметим, что файл cookie авторизации устанавливается, и после выхода из цикла перенаправления я могу без проблем перейти к маршруту "/" вручную.
Любая помощь с этим очень ценится
2 ответа
Это связано с hapi-auth-cookie
еще не имеет дело с isSameSite
опция cookie в hapi 15, приводящая к тому, что cookie не отправляется обратно на сервер.
Вы можете решить эту проблему, установив опцию вручную.
Дополнительную информацию можно найти в заметках о выпуске hapi 15 https://github.com/hapijs/hapi/issues/3323 и в PR hapi-auth-cookie
https://github.com/hapijs/hapi-auth-cookie/pull/142
Это решает проблему:
server.auth.strategy('session', 'cookie', true, {
password: 'private_key',
redirectTo: '/login/google',
isSameSite: 'Lax'
});