-1

与えられた:

  1. デフォルト構成の django サービス、および;
  2. デフォルト構成の django rest フレームワーク:

ログイン方法を教えてください。

「デフォルト構成」とは、両方の Web サイトで推奨されているチュートリアルに従ったことを意味します。

ただし、django も django rest フレームワークも、認証システムをユーザーとして使用する方法については説明していません。彼らはしばしば、django フレームワーク内で実行される Python コードの観点から認証について議論しているようです。

ユーザーが正しい認証を使用して Web サイトを要求する方法を示す簡潔で明確なドキュメントはどこで読むことができますか?

「REST_FRAMEWORK」の DEFAULT_PERMISSION_CLASSES が次のように設定されていることを知っています: rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly

これは、デフォルトでdjango Webサービスに設定されている認証をおそらく使用していることを意味します。

そして、私のdjangoインスタンスには、「Authenticationmiddleware」や「CsrfViewMiddleware」などが含まれていることを知っています。(わかりました、CSRFはグーグルで簡単に検索できますが、それは重要ではありません)

関連する django ドキュメントはhttps://docs.djangoproject.com/en/1.5/topics/auth/default/のようです

ただし、データを POST できるように実際に Web サイトにログインする方法はわかりません。

次の方法を説明する簡単で簡潔な手順はどこにありますか。

  1. 特定のユーザーとしてデータを取得します。
  2. 特定のユーザーとしてデータを POST します。

それまでの間、私はドキュメントを熟読し続けます。

これまでのところ、私はやろうとしました:

  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 はログイン ページを提供します。

django はデフォルトで、少なくともバージョン 1.5 では、セキュリティのために CSRF トークンを使用します。

ログインするには、次のことが必要です。

  1. /api-auth/login/ のログイン ページにアクセスして、csrftoken と sessionid を含む Cookie を取得します。これは次のようになります: csrftoken=123411231234123; sessionid=143212341234123412
  2. 上記の Cookie を使用してログイン ページを http POST として送信し、フォーム要素としてユーザー名、パスワード、および csrfmiddlewaretoken を含むフォームとして POST を設定します。** csrfmiddleware の値は、csrftoken 値の値である必要があります。

したがって、繰り返しますが、次のように設定する必要があります。

  • 元の Cookie はすべて POST ヘッダーに設定する必要があります。
  • POST フォームのユーザー名。
  • POST フォームのパスワード。
  • POST フォームの csrfmiddleware トークン。
于 2013-10-08T07:21:06.750 に答える