【问题标题】:Set Django REST Frmework JWT in cookies在 cookie 中设置 Django REST Framework JWT
【发布时间】:2018-03-03 16:58:22
【问题描述】:

我正在使用djangorestframework-jwt 对用户进行身份验证。我已经覆盖了内置的 JSONWebTokenAPIView 以在响应中返回用户详细信息。在我看来,我还在 cookie 中设置了令牌。

def post(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)

    if serializer.is_valid():
        user = serializer.object.get('user') or request.user
        token = serializer.object.get('token')
        response_data = {
            'access_token': token,
            'user': UserInfoSerializer(user).data
        }
        response = Response(response_data, status=status.HTTP_200_OK)
        if api_settings.JWT_AUTH_COOKIE:
            expiration = (datetime.utcnow() + api_settings.JWT_EXPIRATION_DELTA)
            response.set_cookie(api_settings.JWT_AUTH_COOKIE,
                                response.data['access_token'],
                                expires=expiration,
                                httponly=True)
        return response

    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

它在 Django 服务器上运行良好。当我使用 REST 可浏览 api 视图验证 api 时,我可以在 cookie 中看到令牌。但是我的前端(React)应用程序在 localhost:3000 上运行,当我从前端服务器点击这个 api 时,我收到了成功响应,但没有在 cookie 中设置令牌。

我是否也需要设置 cookie 域?

【问题讨论】:

  • 需要通过js设置cookie
  • 好的。但是当django在响应头中发送set cookie时不会自动设置吗?

标签: django rest reactjs cookies jwt


【解决方案1】:

我需要在前端和后端设置withCredentials: true

感谢这篇帖子Django cookies are not getting saved on browser

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 2013-05-12
    • 2019-05-12
    • 2020-07-15
    • 2019-08-01
    • 2018-07-13
    • 2017-05-05
    • 2018-05-14
    • 2018-02-26
    相关资源
    最近更新 更多