Как создать API для входа в систему с помощью Django Rest Framework?

Я хочу создать login api (или использовать существующий, если он уже предварительно упакован), используя django rest framework. Однако я полностью в недоумении. Всякий раз, когда я отправляю запрос на отправку URL-адреса «login» в django rest, он просто отправляет обратно страницу браузера api template …

МОЯ КОНФИГУРАЦИЯ

  • 'Недопустимый синтаксис ввода для типа inet' db error в приложении Django с postgres и Gunicorn + Nginx в качестве обратного прокси
  • Расширение профиля пользователя в Django. Создание пользователей пользователями
  • Как проверить ограничение уникальности по внешнему ключу (django)
  • В чем смысл «_» в python?
  • Django создает CSV-файл, который содержит Unicode и может быть открыт непосредственно с помощью Excel
  • Django: использование аннотата, графа и отличия в Queryset
  • urls.py

    url(r'^api/v1/', include('rest_framework.urls', namespace='rest_framework')) 

    settings.py

     REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.BasicAuthentication', 'rest_framework.authentication.SessionAuthentication', ) } 

    ЧТО Я ХОЧУ

    Запрос:

     POST /api/v1/login username='name' pass='pass' 

    Отклик:

     200 OK "{username: 'name', 'userId': '54321'}" set-cookie: sessionid="blahblah" 

  • Различия между STATICFILES_DIR, STATIC_ROOT и MEDIA_ROOT
  • Лучшее место для очистки кеша при перезапуске сервера django
  • Уценка Python добавляет класс в таблицу
  • Домен Django ManyToManyField с использованием?
  • Каков наилучший способ дублирования данных в шаблоне django?
  • Django - выбор значений из запроса POST
  • 3 Solutions collect form web for “Как создать API для входа в систему с помощью Django Rest Framework?”

    Взгляните на вид api из django-rest-framework-jwt . Это реализация для создания токенов auth, а не сеансов cookie, но ваша реализация будет аналогичной. См. Views.py и serializers.py . Вероятно, вы можете использовать serializers.py без изменений и просто настроить свои представления, чтобы вернуть правильные параметры и, возможно, установить cookie сеанса (не можете вспомнить, если это уже выполнено при аутентификации).

    Если вы хотите что-то подобное, я делаю то же самое, но я использую аутентификацию Token.

    Проверьте их страницу токена здесь

    Это может быть не то, что вы хотите, но так, как я это делаю (поскольку я использую его как конечные точки отдыха api для мобильных клиентов)

    Я могу сделать свой url localhost:8000/api/users/ -H Authorization : Token Затем браузер может использовать обычную страницу входа, которую вы создаете, при условии,

    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')

    и для получения токенов для навигации «без входа»

    url(r'^api-token-auth/', 'rest_framework.authtoken.views.obtain_auth_token')

    Затем, если вы совершаете звонки, вы можете передать токены авторизации. Конечно, это именно то, как я это делаю, и это, вероятно, не самый эффективный способ, но моя цель состояла в том, чтобы создать способ, с помощью которого я могу предоставить пользователям сеансовую аутентификацию для браузеров и мобильного доступа через токены.

    Затем в вашем view.py убедитесь, что вы добавили требования к аутентификации для этого представления. Почти так же, как раздел аутентификации сеанса

    permission_classes = (permissions.IsAdminUser,)

    но также включают

    authentication_classes = (authentication.TokenAuthentication,)

    Надеюсь, это поможет, но если нет, удачи в поиске.

    Конечно же, токен – это хороший способ аутентификации, но спрашивающий спрашивает о проверке сеанса.

    Запрос:

     POST /api/v1/login username='username' password='password' 
    • Поместите значение csrftoken в X-CSRFToken в заголовке
    • Несмотря на то, что кто-то использует email качестве имени username параметр username имени username требуется для ввода электронной почты (например, username='sample@domain.com' )

    Отклик:

     302 FOUND sessionid="blahblah" 
    • Если вы не указали next значение, оно будет автоматически перенаправляться в /accounts/profile/ что может привести к ошибке 404
    Python - лучший язык программирования в мире.