@AlexInCube

Как сделать безопасную авторизацию через Discord?

Я хочу создать панель управления ботом. У меня БОТ и ПАНЕЛЬ работают на разных адресах, то есть в разных проектах. Связываю я их через Express и Redux.
Я читал что нужно токен хранить на сервере, а пользователю отправлять айди сессии, но не могу полностью это реализовать.
Человек на сайте, жмёт кнопку "Авторизация" и его перекидывает по адресу localhost:8000/auth (это express сервер бота).
Там выполняется этот код:
app.get('/auth', async (req, res) => {
    const { code } = req.query
    if (!code) {
      res.redirect('https://discord.com/api/oauth2/authorize?client_id=' + config.get('BOT_CLIENT_ID') + '&redirect_uri=' + encodeURI(config.get('BOT_REDIRECT_URI') + '/auth') + '&response_type=code&scope=identify')
      return
    }

    oauth.tokenRequest({
      code: code.toString(),
      scope: 'identify guilds',
      grantType: 'authorization_code'
    }).then((data) => {
      req.session.user = data
      console.log(req.session)
      res.redirect('http://localhost:3000/')
    })
  })

Человек подтверждает вход, его обратно возвращает на 'localhost:8000/auth', но вместе с параметром в ссылке code=кучасимоволов. По этому коду запрашивается токен в дискорде и сохраняется в сессию.
И вот нужно вернуться обратно в панель бота по адресу 'localhost:3000' и там при загрузке страницы, делается запрос на 'localhost:8000/getUser'. Предполагалось что сессия для 'localhost:3000 ' сохранится, но этого не происходит и на самом деле начинается новая сессия.
Как мне передать сессию под управление панели бота?
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
@AlexInCube Автор вопроса
Я понял в чём проблема, у меня не отправлялись куки с айди сессии.
В Redux Toolkit нужно писать такой код редьюсера

в запросе reducer`a нужно указать credentials: 'include' и всё заработало
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы