6

我有一个用 Django 构建的 webapp。它可以很好地在网络上使用,但现在我正在构建一个 Android 应用程序。我不确定如何安全地对 Django 后端的 Android 应用程序进行身份验证。

这个 webapp 有用户配置文件。用户可以使用 Web 界面注册/登录/注销。的相关部分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 还是有更好的方法?

4

1 回答 1

6

有几种方法可以进行身份​​验证,但使用现有的 Django 会话支持和它使用的 cookie 可能是最好的方法。

当您连接到启用了会话中间件(您需要登录)的 Django 页面时,它将设置一个会话 cookie(通常称为“sessionid”,尽管您可以自定义它)。登录状态的用户(未登录)存储在服务器端由该会话 ID 链接的会话中(除非您使用的是基于 cookie 的会话,但这是另一个帖子的项目)。

因此,您的 Android 应用只需获取登录页面,取出 sessionid(和csrftoken)cookie,然后使用用户名、密码、sessionid 和 csrftoken 发布帖子。

这是最简单的方法。还有更复杂的选项,主要涉及制作一个返回 JSON 的自定义视图,并且通常开始为您的移动应用程序提供一个 API,而不是让它们假装它们是浏览器,但这在 Django 方面有点复杂。

于 2012-10-31T15:23:55.780 回答