Войти с Django REST JWT - PullRequest
       6

Войти с Django REST JWT

0 голосов
/ 26 августа 2018

У меня есть проект Django с двумя приложениями.Первое приложение - это простое приложение Login / Register, основанное на механизме аутентификации Django по умолчанию.Он имеет две формы и после успешного входа или регистрации будет перенаправлен ко второму приложению.Итак, мое второе приложение - это одностраничное приложение на основе Vue.js.

Также я использовал пакеты djangorestframework и djangorestframework-jwt.

Я понял, как работает JWT, но не могу понятькак реализовать это в моем проекте.Например, это часть кода, который выполняется после POST-запроса из формы входа в систему в моих представлениях:

...
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, email=username, password=password)
if user is not None:
    login(request, user)
    return redirect('spa')
...

Итак, я получил следующие вопросы:

  1. Что мне делать послеуспешный вход в систему (до перенаправления) для создания токена и отправка с ответом
  2. djangorestframework-jwt предоставляет представления для включения в URL

    from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token, verify_jwt_token
    

    Итак, где я должен вызвать receive_jwt_token?В SPA после успешного входа в систему?

  3. Чтобы использовать JWT, следует ли мне создать сериализатор для модели User?
  4. Правильно ли использовать * rest-jwt без поддержки RESTful?

1 Ответ

0 голосов
/ 27 августа 2018

Начало четвертого вопроса:

Правильно ли использовать * rest-jwt без поддержки RESTful?

Rest JWT - это метод аутентификации для API, поэтому смешиваниеэто с использованием аутентификации Django по умолчанию, является чем-то вроде неправильного использования, и я думаю, именно поэтому вы сталкиваетесь с этой проблемой.Вы должны использовать методы rest-jwt как автономные процедуры аутентификации, а не связывать их со встроенными методами аутентификации Django.

Учитывая это, я думаю, что лучшим способом было бы включить вашу подпись.вход / регистрация из вашего первого приложения в ваше приложение Vue.Затем методы аутентификации в приложении Vue могут получить доступ к маршрутам API с вашего сервера Django.

Вот краткий обзор того, как это может работать:

В myapp/urls.py:

from rest_framework_jwt.views import obtain_jwt_token, refresh_jwt_token, verify_jwt_token
urlpatterns = [
    url('auth/token$', obtain_jwt_token),
    url('auth/token/refresh', refresh_jwt_token,
    url('auth/token/verify', verify_jwt_token)
]

Затем в Vue ваша функция входа в систему может сделать запрос POST на [host]/auth/token с учетными данными пользователя для получения JWT.Для справки по DRF JWT: http://getblimp.github.io/django-rest-framework-jwt/#usage

Таким образом, вам не придется беспокоиться о перенаправлении и изменении процессов авторизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...