Как получить cookies (в основном мне нужен jwt-токен) в Ember.js, которые были установлены в Django?

Django Rest Framework

class LoginView(APIView):
        password = request.data['password']
        user = User.objects.filter(email=request.data['email']).first()

        if user is None:
            return Response({
                'success': False,
                'message': 'Username or password is invalid',
                'errors': 'Username or password is invalid',
            }, status=status.HTTP_401_UNAUTHORIZED)

        if not user.check_password(password):
            return Response({
                'success': False,
                'message': 'Username or password is invalid',
                'errors': {'username-or-password': ['Username or password is invalid']},
            }, status=status.HTTP_401_UNAUTHORIZED)

        payload = {
            'id': user.id,
            'iat': datetime.datetime.utcnow()
        }

        token = jwt.encode(payload, 'secret', algorithm='HS256')
        response = Response()
        response.set_cookie(key='token', value=token, httponly=True)

        response.data = {
            'success': True,
            'data': {
                'token': token
            }
        }
        return response

Здесь я отправляю токен в данных ответа, а также устанавливаю токен в cookies.

Как я могу получить/принять/извлечь токен из cookies в Ember.js?

Установив значение httponly на true, вы блокируете доступ к этому cookie от javascript. Поэтому вам нужно будет изменить это значение на стороне Django, однако это может быть проблемой безопасности, и вы захотите исследовать ее для вашего случая использования. Если вы решите пойти этим путем, вы можете получить доступ к значению cookie в Ember.js, используя API javascript Document.cookie как allCookies = document.cookie;.

В качестве альтернативы, если вы не хотите передавать cookie другим скриптам, вы можете добавить URL конечной точки yoursite.com/api/whoami в ваш бэкэнд, который будет отвечать на запрос JWT для текущего аутентифицированного пользователя.

Вернуться на верх