サーバーと通信する必要があるiOSアプリに取り組んでいます。ユーザーがアプリを初めて起動すると、ユーザー名とパスワードを入力するよう求められます。彼が認証されたら、明示的にサインアウトするまでサインインしたままにします。
Apple のドキュメントを数時間掘り下げた後、アイデアを実装する 2 つの方法を指摘できます。<1> http 基本/ダイジェスト認証を使用します。ユーザーが認証されたら、ユーザー名とパスワードをキーチェーンに保存します。サーバーが認証を必要とするときはいつでも、connection:didReceiveAuthenticationChallenge:関数を実装することにより、アプリはユーザー名とパスワードをロードし、正当なNSURLCredentialを構築できます。確かにそれは機能しますが、すべてのリクエストは 1 回認証し、ユーザー シークレットを頻繁に転送する必要があります。
<2> http cookie を使用する ユーザーが認証されると、サーバーは一意のトークンを cookie で応答します。機能に依存するURL 読み込みシステムは、保存されている NSURLRequest に適した Cookie を自動的に送信します。ユーザーがアプリを強制終了したときに Cookie が失われるかどうかはわかりません。
2つの方法は大丈夫だと思いますか?どちらの方がよいですか?同じことを行う他の方法はありますか?
多くのクライアント (twitter/facebook/...) がユーザーをサインインしたままにしているのに気付きました。ありがとう;
ところで、ユーザー名とパスワードをキーチェーンに保存しましたが、サインインしたままにするためには、まだやるべきことがあると思います。