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'
});
Другие вопросы по тегам