-1

鉴于:

  1. 默认配置的 django 服务,以及;
  2. 一个默认配置的 django rest 框架:

如何登录?

通过“默认配置”,我的意思是我遵循了两个网站的建议教程。

但是,django 和 django rest 框架都没有讨论如何以用户身份使用身份验证系统。他们似乎经常从运行在 django 框架中的 python 代码的角度来讨论身份验证。

我在哪里可以阅读简明、清晰的文档,告诉我用户如何通过正确的身份验证请求网站?

我知道我在“REST_FRAMEWORK”中的 DEFAULT_PERMISSION_CLASSES 设置为:rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly

这意味着我可能默认使用 django webservice 中设置的任何身份验证。

而且我知道我的 django 实例具有“Authenticationmiddleware”和“CsrfViewMiddleware”等,无论它们是什么意思。(好吧,CSRF 很容易用 google 搜索,但这不是重点)

相关的 django 文档似乎https://docs.djangoproject.com/en/1.5/topics/auth/default/

但是,这并没有告诉我如何实际登录网站,以便我可以发布一些数据。

我在哪里可以找到简单、简洁的说明,告诉我如何:

  1. 作为特定用户获取一些数据,并且。
  2. 作为特定用户发布一些数据。

同时,我将继续阅读文档。

到目前为止,我已经尝试过:

  1. 使用 GET /api-auth/login/ 获取 csrf cookie
  2. 使用 POST /api-auth/login/ 并提供上一步获取的 cookie 进行登录。

但是,Django 仍然可以检测到伪造。

4

1 回答 1

1

这是如何做到的:

如果您遵循http://django-rest-framework.org/上的文档,django-rest-framework 会为您提供一个登录页面

默认情况下,至少在 1.5 版中,django 使用 CSRF 令牌来保证安全性。

为了登录,您需要:

  1. 通过访问登录页面获取 cookie,位于 /api-auth/login/,包括 csrftoken 和 sessionid。这将类似于:csrftoken=123411231234123; sessionid=143212341234123412
  2. 使用上述 cookie 将登录页面作为 http POST 发送,并将 POST 设置为表单,其中用户名、密码和 csrfmiddlewaretoken 作为表单元素。** csrfmiddleware 的值应该是 csrftoken 的值。

因此,要重新迭代,必须设置以下内容:

  • 必须在 POST 标头中设置所有原始 cookie。
  • POST 表单中的用户名。
  • POST 表单中的密码。
  • POST 表单中的 csrfmiddlewaretoken。
于 2013-10-08T07:21:06.750 回答