Also ich benutze DRF JWT
für meine Authentifizierung. Der Benutzer gibt Anmeldeinformationen ein und antwortet, falls gültig, mit einem JWT, in dem gespeichert ist sessionStorage
. Jedes Mal, wenn der Benutzer auf den geschützten Routen navigiert, wird der JWT /api/auth/refresh
um das Token zu aktualisieren, wenn es noch gültig ist.
Wie auch immer, von der Authentifizierung auf geschützte Routen übergehen, auf denen Daten abgerufen werden, je nachdem, ob der Benutzer dies tut IsAuthenticated
laut DRF. Das Problem ist, dass ich Schwierigkeiten habe, herauszufinden, wie ich es bestimmen soll IsAuthenticated
in DRF, ohne dass der Benutzer erneut Anmeldeinformationen bereitstellt. Ich sollte jetzt erwähnen, dass ich mit Postman teste.
API-URL:
/api/help/questions
Ich habe die Ansicht als:
class GetQuestionsAPIView(ListAPIView):
queryset = Help.objects.all()
serializer_class = GetQuestionsSerializer
permission_classes = [IsAuthenticated,]
Der Serializer ist:
class GetQuestionsSerializer(ModelSerializer):
class Meta:
model = Help
fields = "__all__"
def validate(self, data):
return data
Ich habe ein gültiges Token von /api/auth/signin/
. Ich versuche es an die weiterzugeben /api/help/questions/
Route, um die Liste der Fragen abzurufen.
GET /api/help/questions/
funktioniert nicht, weil es Anmeldeinformationen will. Authentication credentials were not provided.
GET /api/help/questions/
mit Content-type: application/json
und "Autorisierungand the token in the header also says
Authentifizierungsdaten wurden nicht angegeben. "
Dachte vielleicht sollte es sein POST
da ich Anmeldeinformationen sende und die Fragen als Serverantwort erwarte, wenn die Authentifizierung gültig ist, aber so ziemlich die gleichen Ergebnisse.
Ich bin offensichtlich nicht der sachkundigste in diesem Bereich, daher wäre jede Hilfe dankbar.
Antworten:
1 für die Antwort № 1Haben Sie Ihr Token in den Authorization-Header eingefügt? Nachdem Sie sich angemeldet haben, erhalten Sie ein Token, das Sie in die Kopfzeilen der Anforderung Ihrer geschützten URL einfügen sollten:
Authorization: JWT <your_token>
Hier ist ein Beispiel mit curl
:
curl -H "Authorization: JWT <your_token>" http://localhost:8000/protected-url/