0

非常に多くのフィールドがある登録フォームがあり、すべてのフィールドのデータを、新しいユーザーが入力したサーバー上の json データの形式で保存しています。これらすべてのフィールドには、ユーザー名とパスワードの 2 つのフィールドがあります。これらをキーチェーンに保存したいので、次のコードを使用します。

[[KeychainItemWrapper alloc] initWithIdentifier:@"YourAppLogin" accessGroup:nil];

[keychainItem setObject:@"passtextfield.text" forKey:kSecValueData];
[keychainItem setObject:@"usernametextfield.text" forKey:kSecAttrAccount];

そのため、新しいユーザーが登録フォームを送信するたびに、ユーザー名とパスワードがそれぞれキーとともにキーチェーンに保存されます。

今私の質問は、私は別のログインページを持っていて、ユーザーとしてアプリを起動する必要があるときは、登録時にユーザーとして入力したユーザー名とパスワードで最初にログインする必要があるということです。

ログインしてキーチェーン データを取得する方法を示すコードを教えてください。上記で使用した (accessGroup:nil) を変更する必要があります。前もって感謝します

4

1 に答える 1

0

アクセスグループはサーバー側ではなく、iPhone 側です。ドキュメントから:

アクセス グループを使用して、2 つ以上のアプリケーション間でキーチェーン アイテムを共有できます。アプリケーションがキーチェーン アイテムを共有するには、アプリケーションの keychain-access-groups 資格に共通のアクセス グループがリストされている必要があり、共有アイテムをキーチェーンに追加するアプリケーションは、この共有アクセス グループ名をこのキーの値として指定する必要があります。 SecItemAdd 関数に渡されるディクショナリ内。

2 つのログイン ページがある場合、アプリ ロジックは 2 つのユーザーとパスワードの組み合わせを保存する必要があります。kSecAttrAccountそのため、現在アクティブなアカウントを指す必要が あります。

- 編集

あなたのコメントから、Safariのパスワード記憶機能のようなものが欲しいと理解していますか?

したがって、Username1/password1 と username2/password2 があります。ユーザー名「x」はあなたのkSecAttrAccount.

ユーザーがユーザー名を入力するときは、textFieldDidEndEditing:. でtextFieldDidEndEditing入力された文字列をスキャンして、 または のいずれかに一致するものを探しusername1ますusername2。一致するものがあれば、対応するパスワードを取得します。一致するものがない場合は、それが新しいユーザー名とパスワードの組み合わせであると想定し、この新しい組み合わせも保存します。

あなたが空想を得て、彼らが入力している間に一致をスキャンしたい場合は、以下をお読みくださいtextField:shouldChangeCharactersInRange:replacementString:

于 2013-09-09T07:33:52.090 に答える