我的Django rest框架项目中有2个应用程序,分别是“帐户”和“ trello”。我已经使用了DRF的令牌身份验证。我已经为尝试登录“帐户”应用程序视图的用户进行了身份验证(验证)并生成了令牌。对于我的“ trello”应用程序的一种视图,我已经设置了authentication_classes = (TokenAuthentication,)
和permission_classes = [IsAuthenticated, ]
。我还为DEFAULT_AUTHENTICATION_CLASSES
做了必要的设置。
我的问题是:如何将标头和从我的“帐户”应用程序视图生成的令牌密钥发送到需要验证用户身份的视图(即“ trello”中的视图)?
我已经尝试过这种方式:
accounts / views.py:
import requests
myurl = "http://localhost:8000/trello/create/board/"
class LoginView(APIView):
permission_classes = [AllowAny]
serializer_class = UserLoginSerializer
def post(self, request, *args, **kwargs):
data = request.data
serializer = UserLoginSerializer(data=data, context={'request': request})
serializer.is_valid(raise_exception=True)
print(serializer.validated_data['user'])
user = serializer.validated_data['user']
print("user", user)
token, created = Token.objects.get_or_create(user=user)
requests.post(myurl, data=serializer.validated_data, headers={'Authorization': 'Token {}'.format(token)})
# django_login(request, user)
return Response({'token': token.key},
status=HTTP_200_OK)
trello / views.py:
我实际上不知道如何在此处捕获数据。我尝试使用django请求从帐户视图中发布。我在这里尝试使用get方法,但它无法按我的意愿工作。我可能以错误的方式尝试了此方法,但有人可以纠正吗?
答案 0 :(得分:2)
您可能缺少令牌认证流程。这是发生了什么:
login
视图(或我更喜欢称之为obtain-token
视图)验证客户端提供的用户凭据并颁发令牌。请注意,您无需在此处执行任何Django登录,只需执行颁发令牌TokenAuthentication
类对请求进行身份验证(这是登录发生的位置),并将用户对象添加到请求中