Проблемы с получением cookie в конечной точке django
Итак, в одном из моих представлений django я устанавливаю cookie после успешного входа в систему, чтобы получить из него данные о пользователе и использовать их для отображения соответствующей информации
Вот мой взгляд
class LoginView(APIView):
def post(self, request):
username = request.data.get('username')
password = request.data.get('password')
# Validate that both username and password are provided
if not username or not password:
return Response({'error': 'Username and password are required.'}, status=status.HTTP_400_BAD_REQUEST)
# Authenticate user
user = authenticate(username=username, password=password)
if user is None:
return Response({'error': 'Invalid username or password.'}, status=status.HTTP_401_UNAUTHORIZED)
# Generate JWT token
token = jwt.encode({'user_id': user.id}, 'your_secret_key', algorithm='HS256')
response_data = {'token': token, 'Role': user.user_data.role}
response = Response(response_data, status=status.HTTP_200_OK)
response.set_cookie('jwt', token)
return response
Затем я попытался получить cookie в следующем представлении
class GetUserDetails(APIView):
def get(self, request):
token = request.COOKIES.get('jwt')
print(token)
if token:
try:
# Decode the JWT token to extract user ID
payload = jwt.decode(token, 'secret', algorithms=['HS256'])
user_id = payload.get('id')
user = LoginDetails.objects.get(pk=user_id)
user_data = user.user_data
# Fetch and format user details
education_data = list(Education.objects.filter(user=user_data).values())
work_experience_data = list(WorkExperience.objects.filter(user=user_data).values())
data = {
'user': {
'fullName': user_data.fullName,
'gender': user_data.gender,
'aadhaarNumber': user_data.aadhaarNumber,
'dateOfBirth': user_data.dateOfBirth,
'maritalStatus': user_data.maritalStatus,
'emergencyContactName': user_data.emergencyContactName,
'address': user_data.address,
'phoneNumber': user_data.phoneNumber,
'emailID': user_data.emailID,
'emergencyContactNumber': user_data.emergencyContactNumber,
'jobTitle': user_data.jobTitle,
'departmentName': user_data.departmentName,
'joiningDate': user_data.joiningDate,
'employmentType': user_data.employmentType,
'relevantSkills': user_data.relevantSkills,
},
'education': education_data,
'workExperience': work_experience_data
}
return JsonResponse(data)
except jwt.ExpiredSignatureError:
return JsonResponse({'error': 'Token expired'}, status=401)
except jwt.InvalidTokenError:
return JsonResponse({'error': 'Invalid token'}, status=401)
except LoginDetails.DoesNotExist:
return JsonResponse({'error': 'User not found'}, status=404)
else:
return JsonResponse({'error': 'You are not logged in'}, status=401)
При печати cookie на терминале я получаю None
Когда вызывается представление LoginView, оно проверяет введенные имя пользователя и пароль и регистрирует пользователя. Но затем он переводит меня на страницу, на которой отображаются сведения о пользователе, и при вызове представления GetuserDetails выдает следующее
{"error": "You are not logged in"}
Я убедился, что cookie устанавливается в консоли браузера. Также я запускаю свой react-сервер на localhost:3000 и свой django-сервер на 127.0.0.1:8000
Я понятия не имею, почему представление не может получить cookie