1

サーバーと通信する必要があるiOSアプリに取り組んでいます。ユーザーがアプリを初めて起動すると、ユーザー名とパスワードを入力するよう求められます。彼が認証されたら、明示的にサインアウトするまでサインインしたままにします。

Apple のドキュメントを数時間掘り下げた後、アイデアを実装する 2 つの方法を指摘できます。<1> http 基本/ダイジェスト認証を使用します。ユーザーが認証されたら、ユーザー名とパスワードをキーチェーンに保存します。サーバーが認証を必要とするときはいつでも、connection:didReceiveAuthenticationChallenge:関数を実装することにより、アプリはユーザー名とパスワードをロードし、正当なNSURLCredentialを構築できます。確かにそれは機能しますが、すべてのリクエストは 1 回認証し、ユーザー シークレットを頻繁に転送する必要があります。

<2> http cookie を使用する ユーザーが認証されると、サーバーは一意のトークンを cookie で応答します。機能に依存するURL 読み込みシステムは、保存されている NSURLRequest に適した Cookie を自動的に送信します。ユーザーがアプリを強制終了したときに Cookie が失われるかどうかはわかりません。

2つの方法は大丈夫だと思いますか?どちらの方がよいですか?同じことを行う他の方法はありますか?

多くのクライアント (twitter/facebook/...) がユーザーをサインインしたままにしているのに気付きました。ありがとう;

ところで、ユーザー名とパスワードをキーチェーンに保存しましたが、サインインしたままにするためには、まだやるべきことがあると思います。

4

3 に答える 3

0

これを試して、認証ユーザー名のパスワードを NSUserDefaults に保存してください。アプリケーションでグローバルに提供されます。

データを保存するには、これを試してください

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:isValid forKey:@"Username"];
[defaults setObject:accessLevel forKey:@"Password"];

そして、データを取得するには、これを試してください

NSUserDefaults *defaultsCheck = [NSUserDefaults standardUserDefaults];
NSString  * userIDCheck = [defaultsCheck objectForKey:@"Username"];
NSString *accessLevelCheck = [defaultsCheck objectForKey:@"Password"];
于 2013-04-17T05:45:03.157 に答える