Когда пользователь входит в мое приложение, он получает ответ Set-Cookie от сервера, который сохраняет аутентификацию и обновляет токен в своих файлах cookie. Это отлично работает.
После того, как пользователь войдет в систему и получит успешный ответ на вход в систему (тот же ответ, который включает Set-Cookie) с сервера, они будут перенаправлены на инструментальную панель приложения.
Страница панели мониторинга содержит функцию (в getInitialProps с использованием next.js), которая проверяет, что пользователь вошел в систему. Для этого он проверяет куки пользователя на наличие токена аутентификации и проверяет его на сервере.
Проблема, с которой я столкнулся, заключается в том, что как только с сервера получен успешный ответ при входе в систему, пользователь перенаправляется на панель инструментов ДО НАЧАЛА установки файлов cookie. Это означает, что пользователь считается не прошедшим проверку подлинности при вызове getInitialProps, когда он достигает панели мониторинга до сохранения файлов cookie.
Можно ли подождать, пока файлы cookie действительно будут сохранены, прежде чем перенаправлять пользователя?
Я знаю, что мог бы просто использовать setTimeout, чтобы подождать несколько секунд, прежде чем перенаправлять, но это выглядит грязно и не оптимально. Я не могу использовать локальное хранилище для сохранения токенов, так как getInitialProps не работает с локальным хранилищем, поскольку разрешает только рендеринг на стороне сервера.
Вот соответствующий код. Мне нужно отложить метод redirect () до тех пор, пока не будет установлен cookie.
await signIn({ variables: { login, password } })
.then(data => {
client.cache.reset()
.then(() => {
redirect({}, '/')
})
})