Как аутентифицировать запрос в Django-rest-auth?

Я пытаюсь интегрировать пакет django-rest-auth в свое веб-приложение. Пока я могу регистрировать пользователей, отправлять электронную почту для сброса пароля и входить в систему с помощью API, предоставляемого пакетом django-rest-auth.

Теперь, когда я отправляю запрос на вход, он возвращает «токен» после успешной аутентификации.

Как отправить токен аутентификации в дальнейших запросах? Например, я пытаюсь вызвать пользователя с помощью GET /rest-auth/user, но он дает мне ответ Authentication credentials not provided. Я попытался передать токен через HTTP Basic Authentication (base64 кодирует токен как имя пользователя и оставьте пароль пустым). Я все еще не могу работать.

Кто-нибудь знает, как я должен передавать этот токен в запросах?


person G.D. Singh    schedule 15.03.2016    source источник


Ответы (2)


Если вы хотите использовать аутентификацию токена, вам необходимо установите HTTP-заголовок Authorization. Из документов:

Для аутентификации клиентов ключ токена должен быть включен в HTTP-заголовок авторизации. Ключ должен начинаться с префикса строкового литерала Token с пробелом, разделяющим две строки. Например:

Авторизация: Токен 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

В вызове ajax вы можете создать такой заголовок:

$.ajax({
    type: 'POST',
    url: url,
    beforeSend: function (request)
    {
       request.setRequestHeader("Authorization", "Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b");
    },
});
person ilse2005    schedule 15.03.2016
comment
Даже это не работает. Все еще получаю ответ: {"detail":"Authentication credentials were not provided."} - person G.D. Singh; 15.03.2016
comment
Вы настроили AUTHENTICATION_CLASSES? (django-rest-framework.org/ api-guide / authentication /) и добавил TokenAuthentication? - person ilse2005; 15.03.2016
comment
откуда 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b? Как шаблон узнает, что это за токен для пользователя? - person Logic1; 01.09.2018

Привет Вам нужно отправлять токен в заголовках

введите здесь описание изображения

$.ajax({
            type:"POST",
            beforeSend: function (request)
            {
                request.setRequestHeader("Authority", 'Bearer 33a95862173cc0565fe502eb062b2e7c67e23a3a');
            },

и в коде django используйте

user = request.user
if user:
 return "User token verified"
elif :
 return "User token not verified"

в django автоматически находит токен в заголовках и с помощью токена извлекает пользовательские данные.

person SuReSh    schedule 16.03.2016