iPhone - 从文件中保存和加载用户的登录信息

Posted

技术标签:

【中文标题】iPhone - 从文件中保存和加载用户的登录信息【英文标题】:iPhone - Saving and Loading a user's login information from file 【发布时间】:2011-04-14 04:18:52 【问题描述】:

大家好,我在尝试保存用户的登录名(电子邮件)和密码(字符/数字)时遇到了一点问题。这些都是 NSStrings 的 UITextFields。

我现在在视图的末尾设置了它,然后它被解雇为

[email writeToFile:@"Login" atomically:YES encoding:NSUTF8StringEncoding error:&error];
[password writeToFile:@"Password" atomically:YES encoding:NSUTF8StringEncoding error:&error];

但是,我不确定在加载视图时如何加载这些内容。 我在视图加载开始时尝试这样做:

NSString *email;
NSString *password;
NSError *error;
NSString *em = [[NSString alloc] initWithContentsOfFile:@"Login" encoding:NSUTF8StringEncoding error:&error]; 
NSString *pass = [[NSString alloc] initWithContentsOfFile:@"Password" encoding:NSUTF8StringEncoding error:&error];
if (error == nil) 
   userEmail.text = em;
   userPassword.text = pass; 


email = userEmail.text;
password = userPassword.text;

但是,我实际上无法获取这两个文件中的数据。是因为我必须拥有文件的完整路径吗?另外,有没有办法将这些都保存到一个文件中(NSMutableDictionary)?任何建议都会很棒!

亚历克斯

【问题讨论】:

【参考方案1】:

您不应将用户的凭据以纯文本形式存储在文件中。如果手机丢失或被黑客入侵,它可以很容易地被读取。

更好的方法是将信息安全地存储在 iPhone 钥匙串中。这将为您处理加密/解密,并且比您可能自己编写的更安全。

SFHFKeychainUtils 是一个可以让钥匙串的使用变得更容易的库。这将为您提供适用于模拟器和设备的抽象。

【讨论】:

我将不得不对此进行调查,看看哪个才是真正的最佳选择。 它可能不是最漂亮的选择,但它是 Apple 推荐的这种存储方式。 如果不使用这个方法会被应用商店拒绝吗? 不,只是推荐,不是要求。【参考方案2】:

您可能想查看 NSUserDefaults,但要回答您的问题,您可能需要指定路径。

获取路径:


NSArray *paths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/Login", docDir];

保存:


[em writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];

加载:

NSString *em = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];

不要忘记 [em release] 以避免内存泄漏!

【讨论】:

但正如 Ben Scheirman 所说,将用户登录信息存储在钥匙串中要好得多。

以上是关于iPhone - 从文件中保存和加载用户的登录信息的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSUserDefaults 保存/加载数据 (cocos2d iphone)

将 iPhone 应用程序中的数据保存在手表应用程序中

在 iPhone 中保存 Spotify 登录的用户会话

iPhone:有条件地加载视图

保存和加载数据(iphone sdk)

JSP中怎样用session保存并验证用户登录信息