是的,您应该将凭据存储在设备上。这样,当服务器上的会话过期时,可以立即重新验证用户。(请记住,这比每次都强制用户登录更不安全,因为如果用户丢失了他的手机,任何找到它的人都可以访问他的帐户。)
只需将电子邮件地址和密码存储在 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 并使用户保持登录状态,因此您可以使用它继续向服务器发送请求,直到会话到期。