4

今のところ、私は Django REST API を持っており、バックエンドに User Auth を実装した Web アプリのすべてがうまくいっています。「login_required」条件は、Cookie ベースの Web アプリに適しています。

同じ API にアクセスする必要がある Android アプリがあります。ユーザーにサインインできます。私が知る必要があるのは、ビューに対して GET/POST リクエストを行うときにすべてのユーザーを認証する方法です。

私の調査では、いくつかの解決策が示されています: 1) Cookie を利用したセッション 2) GET/POST リクエストごとにユーザー名とパスワードを送信します (安全ではない可能性があります)。

何か案は?

4

3 に答える 3

8

Django REST Framework を使用しているように思えますが、その場合は TokenAuthentication が適している可能性があります。ドキュメントから:

この認証方式は、単純なトークン ベースの HTTP 認証方式を使用します。トークン認証は、ネイティブ デスクトップ クライアントやモバイル クライアントなどのクライアント/サーバー セットアップに適しています。

obtain_auth_tokenクライアントは、urls.py で設定した組み込みビューを使用してトークンを要求できるため、トークンを事前に生成する必要はありません。

Authorization:クライアントがセッションのトークンを取得すると、 HTTP ヘッダーを使用して後続の API 呼び出しでそれを提供できます。

詳細については、ドキュメントをご覧ください: http://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication

于 2013-08-20T09:13:17.880 に答える
3

HTTP 基本認証 (BA) の実装は、Cookie、セッション ID、およびログイン ページを必要としないため、Web リソースへのアクセス制御を実施するための最も簡単な手法です。むしろ、HTTP 基本認証は静的な標準 HTTP ヘッダーを使用します。つまり、予期してハンドシェークを行う必要はありません。

詳細を読んで、サーバー側とクライアント側で実装するために何をする必要があるかを理解するには、これを読んでください。

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

私はさまざまな REST Java フレームワークを使用しましたが、それらはすべて、基本認証ヘッダーの追加と取得を追加するための単純な API を提供します。

Django の場合、ここにいくつかの便利なコード スニペットがあります。

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

于 2013-08-20T09:13:17.913 に答える
0

Django session_id で Cookie を設定する Django Sessions ミドルウェアを使用することをお勧めします。次のリクエストでは、セッション ミドルウェアがリクエスト オブジェクトに user という属性を設定し、ユーザーが request.user.is_authenticated() (または login_required デコレータ) によって認証されているかどうかをテストできます。また、設定でセッションタイムアウトを好きなように設定できます。

このミドルウェアは、デフォルトの django 設定で有効になっています。

于 2013-08-20T11:57:48.650 に答える