在Cookie中设置Django REST Frmework JWT

时间:2017-09-22 07:31:40

标签: django rest reactjs cookies jwt

我正在使用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域?

1 个答案:

答案 0 :(得分:3)

我需要在前端和后端设置componentDidMount(){ // don't forget to define selectednow this.props.actionis(selectednow, 'disabled'); }

感谢这篇文章Django cookies are not getting saved on browser

找到了答案