Аутентификация приложения Android или iPhone в серверной части Django

У меня есть веб-приложение, созданное с помощью Django. Он отлично работает в Интернете, но сейчас я создаю приложение для Android. Я не уверен, как безопасно аутентифицировать приложение Android через бэкэнд Django.

Это веб-приложение имеет профили пользователей. Пользователь может зарегистрироваться / войти / выйти с помощью веб-интерфейса. Соответствующая часть urls.py выглядит так:

urlpatterns += patterns('',
  url(r'^accounts/login/$', 'django.contrib.auth.views.login', name='login'),
  url(r'^accounts/logout/$', 'django.contrib.auth.views.logout', name="logout"),
)

Насколько я понимаю, после того, как пользователь успешно завершает accounts/login, в браузере сохраняется некоторый файл cookie, который используется для остальных подключений. Это верно?

Когда на устройстве Android заданы имя пользователя и пароль, как правильно или лучше всего аутентифицировать пользователя в серверной части Django? Нужно ли мне получать cookie, как в браузере, или есть способ лучше?


person Alexis    schedule 31.10.2012    source источник


Ответы (1)


Есть несколько способов выполнить аутентификацию, но использование существующей поддержки сеанса Django и файлов cookie, которые он использует, вероятно, лучший способ.

Когда вы подключаетесь к странице Django с включенным промежуточным ПО для сеанса (которое вам нужен для входа в систему) он установит файл cookie сеанса (обычно называемый 'sessionid', хотя вы можете настроить это). Состояние пользователей (не) вошедших в систему сохраняется на стороне сервера в сеансе, связанном с этим идентификатором сеанса (если вы не используете сессий на основе файлов cookie, но это элемент для другого сообщения).

Таким образом, ваше приложение Android может просто получить страницу входа, выудить идентификатор сеанса (и csrftoken) cookie, а затем разместите сообщение с именем пользователя, паролем, идентификатором сеанса и csrftoken.

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

person Tom Parker-Shemilt    schedule 31.10.2012