Django 403 "detail": "Учетные данные для аутентификации не были предоставлены". Токены Knox
Я следовал этому руководству (https://github.com/bradtraversy/lead_manager_react_django/tree/db45e4f6fc05a3481e7b8a0223e0aab0355a84b6), чтобы сделать приложение Django-React-Redux. У меня возникли проблемы с моим UserAPI, в частности, при выполнении запроса GET
. Обратите внимание, что я использую токены knox. Поскольку функция выхода из системы работает нормально (эта функция используется по умолчанию в knox), я вижу, что токен правильно сгенерирован из логина, так как я использую этот токен для выхода из системы. Я подозреваю, что в моем settings.py
что-то не так.
Ошибка заключается в следующем: 403: "detail": "Authentication credentials were not provided."
class UserAPI(generics.RetrieveAPIView):
# this route needs protection
# need a valid token to view
permission_classes = [
permissions.IsAuthenticated,
]
serializer_class = UserSerializer
def get_object(self):
return self.request.user
# Get the registered organizations of the user
@action(methods=['get'],detail=True)
def registered_orgs(self,request,*args,**kwargs):
instance = self.get_object()
orgs = instance.followed_organizations.all()
serializer = OrganizationSerializer(orgs,many=True)
return Response(serializer.data)
Вот мой файл настроек:
Файл сериализатора пользователя:
# User serializer
class UserSerializer(serializers.ModelSerializer):
# Number of followed organizations
followed_organization_count = serializers.SerializerMethodField()
# The followed organizations
followed_organizations = serializers.SerializerMethodField()
# bio
bio = serializers.SerializerMethodField()
class Meta:
# Need unique validator on name and email https://stackoverflow.com/a/38160343/12939325
model = User
fields = ('id','username','email','first_name','last_name',
'followed_organization_count','followed_organizations','bio')
# cant change id
read_only_fields = ['id']
def get_followed_organization_count(self,obj):
return len(obj.followed_organizations.all())
def get_followed_organizations(self,obj):
listOrgs = obj.followed_organizations.all()
serializer = OrganizationSerializer(listOrgs,many=True)
return serializer.data
def get_bio(self,obj):
return obj.profile.bio
Я могу сделать запрос на вход в систему с помощью Postman, получить токен от knox, а затем использовать его для выхода из системы. Однако я не могу вызвать ни одной пользовательской функции, требующей определенного класса разрешений.
Я искал решение в Интернете, но не нашел его.
Пожалуйста, дайте мне знать, если есть что-то еще, что я могу предоставить, чтобы помочь решить эту проблему. Спасибо!