我正在使用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域?
答案 0 :(得分:3)
我需要在前端和后端设置componentDidMount(){
// don't forget to define selectednow
this.props.actionis(selectednow, 'disabled');
}
。