Django と Tastypie を使用した基本的な認証の例はありますか? Django での認証、特に Tastypie での認証のしくみについて少し混乱しています。認証が API キーでどのように機能するか、および Django に組み込まれている User モデルでユーザーを認証する方法を知りたいです。提案やコードは本当にありがたいです。ありがとう。
2 に答える
認証に関する質問に答えるために:
Django での認証はどのように機能しますか?
機能するにはDjango 認証が必要ですSessionMiddleware
。セッションがロードされると、Django 認証バックエンド_auth_user
は、現在ログインしているユーザーの ID を含む特別な Cookie (IIRC) を読み取ります。django シェルにアクセスできる場合は、それを操作して任意のユーザーとしてログインできます。バックエンドが_auth_user
キーがあることを認識すると、レイジーな User オブジェクトをリクエストに追加します (そのため、User.objects.get(...)
実際に必要になるまで を遅らせます)。セッション dict にそのようなキーがない場合、ユーザーは匿名であると主張AnonymousUser
され、代わりに のインスタンスがリクエスト オブジェクトに追加されます。
Tastypie で認証はどのように機能しますか?
リソース ビューが実行される前に、Resource.is_authenticated(request)
メソッドが呼び出されます。このメソッドは、選択した のバックエンドのis_authenticated(request)
メソッドを呼び出します。メソッドが を返した場合、認証は失敗したと主張され、エラーが返されます。メソッドが を返す場合、代わりにレスポンスが返されます。メソッドが を返す場合、リクエストは認証されたと主張されます。authentication
Resource
False
Unauthorized
HttpResponse
True
ユーザー モデル認証は Tastypie でどのように機能しますか?
User モデルの認証はSessionAuthentication
、Tastypie 自体が提供するバックエンドを使用して実行できます。認証ミドルウェアが関連するユーザーモデルをリクエストに自動的に挿入できるように、現在のリクエストのセッションを作成します。このメソッドが機能するには、API クライアントが Cookie の保存と今後のリクエストでの再送信をサポートしている必要があることに注意してください。
これは便利かもしれません。Django セッション Cookie に基づいてユーザーを認証できます。
https://github.com/amezcua/TastyPie-DjangoCookie-Auth/blob/master/DjangoCookieAuth.py
私は自分のアプリケーションでこれを使用していますが、動作します!