axrising
@axrising

Как реализовать аутентификацию OAuth 2.0 на сервере и связать с клиентом?

Как правильно реализовать аутентификацию OAuth 2.0 (passportjs) на сервере и связать с клиентом, чтобы после выполнения callback - вернулся user и в setHeader установились cookies с токенами?

Сейчас мой код выглядит примерно так:

@Get('google')
  @UseGuards(GoogleAuthGuard)
  async googleAuth2(@Res() res: Response) {
    console.log('res', res);
  }

  @Get('google/callback')
  @UseGuards(GoogleAuthGuard)
  async googleCallback(@Req() req: any, @Res() res: Response) {
    console.log('req', req.user);
    const { accessTokenCookie, refreshTokenCookie, user } = req.user;
    res.setHeader('Set-Cookie', [accessTokenCookie, refreshTokenCookie]);
    res.req.user;
    return res.redirect('http://localhost:3000/');
  }

Проблема в том, что на клиенте роут localhost:5000/api/auth/google выполняется в новом окне и связать это с логикой клиента не получается, так как не запускается никакой экшн на клиенте и не выполняется сага, которая диспатчит полученного юзера в стейт, и пропускает его на приватные роуты на клиенте.

const googleAuth = () => {
    window.open('http://localhost:5000/api/auth/google', '_self')
  }

Подскажите, какой fullstack flow для этой задачи вы используете, чтобы приложение работало правильно.
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы