Создание API загрузки файлов на Django с аутентификацией пользователя - PullRequest
2 голосов
/ 16 августа 2011

У меня есть приложение Django, которое позволяет пользователю загружать файл и обрабатывать его, и мне нужно написать API для этого приложения.Требования:

  • API должен принимать загрузки файлов (это действительно единственное, за что API будет отвечать)
  • Должна поддерживаться аутентификация пользователя, то есть каждый загружаемый файл долженбыть связанным с существующим пользователем Django

Я написал первую часть довольно просто, просто попросив Django прослушивать данные POST по конкретному URL (который я ударил, передав файл в curl), но это, очевидно, не даст мне аутентификацию пользователя.

Как я могу добавить это в?Должен ли я попробовать что-то вроде tastypie, так как оно предназначено для создания API и имеет поддержку аутентификации пользователя, хотя я лишь слегка коснусь поверхности его функциональных возможностей с помощью этого базового API?Или я мог бы просто сказать Django, чтобы он принимал имя пользователя и пароль в POST вместе с файлом?Есть ли лучшая практика для аутентификации пользователя через API, построенный поверх Django?

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Я мог бы просто использовать приложение django.contrib.auth и перед обработкой фактических данных файла в запросе POST просто проверить, что запрос POST также содержит действительные данные аутентификации.Вы можете сделать это, вызвав функцию authenticate, см. https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.authenticate

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

0 голосов
/ 13 августа 2015

Auth

  • Добавить аутентификацию для API. Например, url / uploadfile? File = 1.txt & authid = xxx
  • Идентификатор аутентификации можно получить из другого API с именем пользователя и паролем.

Пожалуйста, обратитесь к моему коду для загрузки файла и аутентификации API на git .

0 голосов
/ 17 августа 2011

Если это не слишком для вашего приложения, я бы подумал об использовании OAuth для аутентификации в вашем API. Существует модуль django под названием oauth2app , который позволяет вам защищать URL-адрес за аутентификацией oauth.

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