0

iOS アプリを開発してまだ数週間しか経っていないので、ご容赦ください。アプリの最初の画面を、メール アドレスとパスワードを使用したログインにしたい。ビューを設定しましたが、認証を保存する最善の方法がわかりません。

認証自体はサーバー側で処理されます。ユーザーが電子メールとパスワードを入力すると、サーバーへの接続が実行され、失敗したかどうかにかかわらず JSON が返されます。成功した場合、必要なものは何でも返します。

問題は、どの情報を保存する必要があり、どこに保存するかということです。ユーザー ID とパスワードを md5 文字列として保存する必要がありますか? 次に、サーバーを呼び出すたびに、ユーザー ID と md5 文字列を渡して、アクセス権があるかどうかを確認します。それは意味がありますか?

4

1 に答える 1

2

はい、資格情報をデバイスに保存する必要があります。これにより、サーバーでセッションが期限切れになったときに、ユーザーをすぐに再認証できます。(これは、ユーザーに毎回ログインを強制するよりも安全性が低いことに注意してください。ユーザーが電話をなくした場合、それを見つけた人は誰でも彼のアカウントにアクセスできるためです。)

メール アドレスとパスワードを SQLite テーブル、plist、テキスト ファイルなど、必要なものに保存するだけです。パスワードを保存しているファイルに他のアプリケーションがアクセスできない場合でも、パスワードを暗号化することをお勧めします。

編集:

ところで、必ずしもすべてのリクエストで資格情報をサーバーに渡す必要はありません。サーバー側で何を使用しているかはわかりませんが、セッションを使用するように設定できるため、ユーザーは再認証が必要になるまでしばらく待ちます。資格情報を送信するために使用したコードを次に示します。

NSURLConnection *connection;
NSString *url = [NSString stringWithFormat:@"http://example.com/service/authenticate.ashx"];
NSString *username = [self.usernameField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *password = [self.passwordField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSMutableString* requestURL = [[NSMutableString alloc] initWithString:url];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: [NSString stringWithString:requestURL]]];
[request setHTTPMethod: @"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[request setHTTPBody:[[NSString stringWithFormat:@"username=%@&password=%@", username, password] dataUsingEncoding:NSUTF8StringEncoding]];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

その NSURLConnection オブジェクトは Cookie を管理し、ユーザーのログイン状態を維持するため、これを使用して、セッションが期限切れになるまでサーバーに要求を送信し続けることができます。

于 2012-05-24T19:34:17.493 に答える