2015-05-05 4 views
0

Я пытаюсь реализовать TokenAuthentication из рамки Django rest. я могу получить ключ токена с сервера,TokenAuthentication: Не удалось аутентифицировать

$curl -d "username=admin&password=admin" http://localhost:8000/api-token-auth/ 
{"token":"a571a596eab2e4063da4b9250a05b570ba8e9786"} 

Но я не могу получить его использовать с любым апи,

curl -X GET http://localhost:8000/cart/ -H "Authorization: Token a571a596eab2e4063da4b9250a05b570ba8e9786" 
{"detail":"Authentication credentials were not provided."} 

Мой файл настройки,

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'rest_framework', 
    'rest_framework.authtoken', 
    'myapp', 
) 
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 
#rest framework 
REST_FRAMEWORK = { 
    'DEFAULT_FILTER_BACKENDS': (
     'rest_framework.filters.DjangoFilterBackend', 
    ), 
    'DEFAULT_PERMISSION_CLASSES': (
     'rest_framework.permissions.IsAuthenticated', 
     'rest_framework.permissions.DjangoObjectPermissions', 
    ), 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.BasicAuthentication', 
     'rest_framework.authentication.SessionAuthentication', 
    ) 
} 

ответ

1

Отсутствует брандмауэр TokenAuthentication в

'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.BasicAuthentication', 
     'rest_framework.authentication.SessionAuthentication', 
    ) 

Просто добавьте линию rest_framework.authentication.TokenAuthentication. Имейте в виду, что порядок имеет значение, поскольку проверки подлинности последовательно проверяются.

+0

Это работает !!. У меня были такие же сомнения. У нас есть класс для базовой аутентификации и проверки сеанса. В документации для аутентификации токенов не было. Благодаря !! – Netro

+0

drf работает всегда одинаково для аутентификации, фильтрации, разрешений и т. Д. Радует, что помогло =). – argaen

Смежные вопросы