6

Django で構築された webapp があります。Web での使用には問題なく動作しますが、現在は Android アプリを作成しています。AndroidアプリをDjangoバックエンドで安全に認証する方法がわかりません。

この Web アプリケーションにはユーザー プロファイルがあります。ユーザーは、Web インターフェイスを使用して登録/ログイン/ログアウトできます。の関連部分はurls.py次のようになります。

urlpatterns += patterns('',
  url(r'^accounts/login/$', 'django.contrib.auth.views.login', name='login'),
  url(r'^accounts/logout/$', 'django.contrib.auth.views.logout', name="logout"),
)

私の理解では、ユーザーが正常に完了した後accounts/login、残りの接続に使用される Cookie がブラウザに保存されます。これは正しいです?

Android デバイスで、ユーザー名とパスワードが与えられた場合、Django バックエンドに対してユーザーを認証する適切または最良の方法は何ですか? ブラウザのように Cookie を取得する必要がありますか、それとももっと良い方法がありますか?

4

1 に答える 1

6

認証を行うにはいくつかの方法がありますが、既存のDjangoセッションサポートとそれが使用するCookieを使用するのがおそらく最良の方法です。

セッションミドルウェアを有効にして(ログインに必要な)Djangoページに接続すると、セッションCookie(一般に「sessionid」と呼ばれますが、カスタマイズできます)が設定されます。ログイン状態のユーザー(ではない)は、このセッションIDでリンクされたセッションにサーバー側で保存されます(Cookieベースのセッションを使用しているが、それが別の投稿のアイテムである場合を除く)。

つまり、Androidアプリは、ログインページを取得し、sessionid(およびcsrftoken)Cookieを取り出して、ユーザー名、パスワード、sessionid、およびcsrftokenを使用して投稿することができます。

それが簡単な方法です。より複雑なオプションがあります。これには、JSONを吐き出し、通常はモバイルアプリにブラウザのふりをさせるのではなくAPIの提供を開始するカスタムビューを作成することが含まれますが、Django側ではやや複雑です。

于 2012-10-31T15:23:55.780 に答える