Я занимаюсь разработкой веб-сайта с фреймворком django rest, фреймворком django jwt для backend и next.js, реагируем, редуцируем для frontend.
С предположением,
хранить токен доступа в виде куки, а не в localStorage.Потому что я использую Next.js и хочу получить токен доступа перед начальным рендерингом.
JWT с JEST Framework JJT JWT Search GitHub
Когда пользователь входит в систему, сервер отправляет токен доступа в виде файлов cookie
Срок действия токена доступа и обновления указаны ниже
'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=300),
'JWT_ALLOW_REFRESH': True,
'JWT_REFRESH_EXPIRATION_DELTA': datetime.timedelta(days=7),
'JWT_AUTH_COOKIE': 'token'
Исходя из вышеизложенного, у меня есть несколько вопросов.
- Когда и как обновить токен
Срок действия токена истекает через 5 минут.В течение 5 минут пользователь может запросить страницу с permission_classes = (IsAuthenticated,)
с токеном доступа.По прошествии 5 минут файлы cookie (токен доступа) автоматически исчезают, и пользователю необходимо снова войти в систему.Чтобы избежать этого, существует система обновления токенов, верно?Если это правильно, когда и как обновить токен правильно?Прежде чем запрашивать бэкэнд с токеном доступа, всегда сравнивайте срок действия токена доступа с текущим временем, затем, если он скоро истечет, прекратите запрашивать один раз, сначала переключитесь на обновление токена с помощью axios, после получения нового токена перезапустите запрос с новым токеном.. Это правильный путь?
токен доступа исчезнет, если срок его действия истек
Потому что это куки, верно?Например, после входа в систему пользователь ушел с компьютера на 10 минут.Пользователь вернулся и попытался зайти на сайт, но ему нужно снова войти в систему.Потому что в куки больше нет токена доступа, а также он не может обновить токен.Что мне делать?
Я хочу, чтобы пользователь не пытался многократно входить в систему и продолжал входить в систему до истечения срока действия маркера обновления.