Podążam za dokumentami DRF, aby skonfigurować tokenowanie TokenAuthentication, i nie mogę uruchomić go z interfejsem API do przeglądania. Wierzę Dodałem odpowiednie linie w settings.py
:Django REST Framework: używanie TokenAuthentication z możliwym do przeglądania interfejsem API
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
INSTALLED_APPS = (
...
'rest_framework',
'rest_framework.authtoken',
...
Jak również wygenerowanych tokenów dla istniejących użytkowników z fragmentem kodu z docs. Widzę tokeny dla każdego użytkownika, jeśli zapytanie o tabelę authtoken_token
, więc wiem, że istnieją.
Everytime próbuję zalogować się do interfejsu API do przeglądania, pojawia się następujący treść powrócił:
HTTP 401 Unauthorized
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
WWW-Authenticate: Token
{
"detail": "Authentication credentials were not provided."
}
Więc wydaje się być próbą token uwierzytelniania, ale ta wiadomość jest trochę dziwne. Gdy wprowadzam niepoprawne hasło, otrzymuję komunikat "Wprowadź poprawne hasło" w formularzu logowania. Kiedy wpisuję poprawne hasło, wydaje się, że loguję, ale przenosi mnie do katalogu głównego API z powyższym komunikatem i wyświetla "Zaloguj się" w górnym menu, a nie nazwę użytkownika.
Czy to może być związane z moim niestandardowym modelem użytkownika? Czy może to wynikać z faktu, że aktualnie rozwijam się na serwerze dev, który nie obsługuje https - dokumenty DRF wspominają o konieczności używania HTTPS z TokenAuthentication, chociaż nie byłem pewien, czy to była najlepsza praktyka, czy faktycznie wymagana .
Myślę, że odpowiedzi że- dziękuję! – dkhaupt
Jeśli dodaję to uwierzytelnienie, nie oznacza to, że każdy, kto zgłosi żądanie do mojego serwera, uzyska dostęp tylko za pomocą nazwy użytkownika i hasła (jak bez autoryzacji tokenów), prawda? Po prostu działa na stronach internetowych, ale chciałem mieć pewność. –
Nawet "rest_framework.authentication.BasicAuthentication" będzie służyć temu celowi. Preferuję to, ponieważ idealna SessionAuthentication powinna być używana tylko wtedy, gdy twój serwer i klient działają w tym samym kontekście, jak szablony django. @KutayDemireren - tak każdy, kto ma nazwę użytkownika/hasło i odpowiednie uprawnienie, będzie miał dostęp do interfejsów API. Ale do góry możesz opublikować punkt końcowy API, czy nie. –