Django Rest Framework предоставляет конечную точку API для запроса токена пользователя с учетом имени пользователя и пароля.Вы можете подключить представление к вашему urls.py
:
from rest_framework.authtoken import views
urlpatterns += [
url(r'^auth-token/', views.obtain_auth_token)
]
Затем, когда вы поместите действительное имя пользователя и пароль в это представление, он вернет токен в ответе JSON:
{ 'token' : '9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b' }
Ваше приложение может затем сохранить это и отправить его в последующих запросах.
Пример получения токена с использованием JQuery (при условии, что представление было сопоставлено с путем ^auth-token/
в вашем urls.py
):
$.post('/auth-token/', { username: 'admin', password: 'whatever' }, function(data) {
// Token available as data.token
});
Если вы попытаетесь опубликовать представление auth-token
в уже аутентифицированном сеансе, Django, скорее всего, отклонит запрос с ответом CSRF token missing or incorrect
.Вам следует либо убедиться, что сеанс не аутентифицирован при получении токена, либо вы могли бы потенциально включить заголовок X-CSRFToken
в запрос.Вам нужно извлечь значение из файла cookie csrftoken
.Например (с использованием JQuery и плагина JQuery Cookie ):
$.ajax({
url: "/auth-token/",
type: "POST",
headers: {
"X-CSRFToken": $.cookie("csrftoken") # Extract the csrftoken from the cookie
},
data:{ username: "admin", password: "whatever" },
dataType:"json"
}).done(function(data) {
// Token available as data.token
});
Подробнее о получении токена аутентификации здесь