我如何登录django? (咆哮警告)

时间:2013-10-08 06:23:26

标签: django django-rest-framework

假设:

  1. 默认配置的django服务,以及;
  2. 默认配置的django rest框架:
  3. 如何登录?

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

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

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

    我知道'REST_FRAMEWORK'中的DEFAULT_PERMISSION_CLASSES设置为:rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly

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

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

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

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

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

    1. 以特定用户身份获取一些数据,并且。
    2. 以特定用户的身份发布一些数据。
    3. 与此同时,我将继续阅读文档。

      到目前为止,我试图这样做:

      1. 使用GET / api-auth / login /
      2. 获取csrf cookie
      3. 使用POST / api-auth / login /执行登录,并提供上一步中获取的cookie。
      4. 然而,Django仍然会检测到伪造。

1 个答案:

答案 0 :(得分:1)

以下是如何操作:

如果您按照http://django-rest-framework.org/上的文档

,django-rest-framework会为您提供登录页面

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

要登录,您需要:

  1. 访问/ api-auth / login /的登录页面获取cookie,包括csrftoken和sessionid。这将是这样的:csrftoken = 123411231234123;的sessionid = 143212341234123412
  2. 使用上述cookie将登录页面作为http POST发送,并将POST设置为包含用户名,密码和csrfmiddlewaretoken作为表单元素的表单。 ** csrfmiddleware的值应该是csrftoken值的值。
  3. 因此,要重新迭代,必须设置以下内容:

    • 必须在POST标题中设置所有原始Cookie。
    • POST表单中的用户名。
    • POST表单中的密码。
    • POST表单中的csrfmiddlewaretoken。