JWT-токен, отправленный в виде cookie, удаляется при обновлении страницы (Next.js 14)
Я использую Django REST Framework в качестве бэкенда для обработки логина, если пользователь верифицирован, сервис отправляет cookie с JWT-токеном. Фронтенд был построен с помощью Next.js 14 app-router Код ниже работает, я вижу установленную cookie в браузере.
Вид входа:
class Login(APIView):
def post(self, request):
email = request.data['email']
password = request.data['password']
user = Usuariso.objects.filter(email=email).first()
...
key = os.getenv('JWT_KEY')
token = jwt.encode(payload, key, algorithm='HS256')
res = Response()
res.set_cookie(
key='jwt',
value=token,
httponly=True,
secure=True,
max_age=60*60*24,
expires=60*60*24,
path='/')
res.data = {
'jwt': token
}
return res
Проблема возникает, когда я обновляю страницу, CSRF и JWT куки удаляются. Приведенный ниже код получает API логина:
app/components/loginForm.js
const login = async () => {
try {
const response = await fetch('http://127.0.0.1:8000/api/user/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
key: 'Access-Control-Allow-Origin',
credentials: 'include',
body: JSON.stringify({
email: email,
password: password
})
});
if (response.ok) {
console.log("it works");
}
} catch (error) {
console.log(error)
}
};
Я читал о JWT, что при установке httOnly в true, cookie не могут быть доступны из javascript, поэтому я думаю, что мне не нужна сторонняя библиотека для этого
Что я пробовал:
Настройка httpOnlny and secure = False
Закомментировав httpOnly и secure
Установка домена как 'localhost'