【问题标题】:How to authenticate android user POST request with Django REST API?如何使用 Django REST API 验证 android 用户 POST 请求?
【发布时间】:2013-08-22 06:14:39
【问题描述】:

截至目前,我有一个 Django REST API,对于 Web 应用程序来说一切都很好,我在后端实现了用户身份验证。 “login_required”条件适用于基于 cookie 的网络应用。

我现在有一个需要访问相同 API 的 Android 应用。我能够登录用户。我需要知道的是如何在每个用户向我的视图发出 GET/POST 请求时对其进行身份验证?

我的研究显示了几个解决方案: 1) Cookie 支持的会话 2) 在每个 GET/POST 请求中发送用户名和密码(可能不安全)

有什么想法吗?

【问题讨论】:

    标签: java android python django authentication


    【解决方案1】:

    听起来您正在使用 Django REST Framework,在这种情况下 TokenAuthentication 可能是合适的。 来自文档:

    此身份验证方案使用简单的基于令牌的 HTTP 身份验证方案。令牌认证适用于 客户端-服务器设置,例如本机桌面和移动客户端

    您不需要预先生成令牌,因为客户端可以使用您在 urls.py 中配置的内置视图 obtain_auth_token 请求令牌。

    一旦客户端获得了会话的令牌,他们就可以使用Authorization: HTTP 标头在后续 API 调用中提供它。

    查看文档了解更多信息:http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication

    【讨论】:

      【解决方案2】:

      HTTP 基本身份验证 (BA) 实现是最简单的 实施对 Web 资源的访问控制的技术,因为它 不需要 cookie、会话标识符和登录页面。相当, HTTP 基本身份验证使用静态的标准 HTTP 标头,这些标头 意味着无需提前握手

      要了解更多信息并了解您需要在服务器端和客户端执行哪些操作,请阅读以下内容:

      http://en.wikipedia.org/wiki/Basic_access_authentication

      我使用过不同的 REST java 框架,它们都提供了简单的 API 来添加基本身份验证标头添加和检索。

      对于 Django,这里有一些有用的代码 sn-ps:

      http://djangosnippets.org/snippets/243/

      【讨论】:

        【解决方案3】:

        你可能想要使用 Django Sessions 中间件,它会设置一个带有 django session_id 的 cookie。在以下请求中,会话中间件将在您的请求对象上设置一个名为 user 的属性,然后您可以测试用户是否通过 request.user.is_authenticated() (或 login_required 装饰器)进行了身份验证。此外,您可以在设置中将会话超时设置为您喜欢的任何值。

        此中间件在默认 django 设置中启用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-04-19
          • 2018-10-29
          • 2015-08-16
          • 2015-08-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-11
          相关资源
          最近更新 更多