关于iPad应用程序的sskeychain和基本身份验证的教程?

时间:2012-07-17 17:31:44

标签: objective-c ios uiwebview basic-authentication sskeychain

在哪里可以找到使用sskeychain存储和检索用户名和密码以及在UIWebView中进行基本身份验证的详细教程?其次,就基于Web的应用程序存储和使用身份验证所需的方法而言,我是否在正确的轨道上? (见下面的解释。)

我发现了一些使用不同方法的教程:

根据以下其他SO问题的建议,建议使用sskeychain以便更轻松地使用钥匙串存储身份验证参数。

我的计划是按照建议在钥匙串中的设备上本地存储用户名和密码,并使用基本身份验证通过UIWebView连接到我的PHP代码。是否有经验丰富的iOS开发人员推荐的有关用户身份验证主题的xcode / Obj-C新手的详细分步教程?

Apple文档似乎不太有用。它可以是简单的销售术语页面,也可以是方法和参数的头部描述,没有很多有用的例子。

更新

我最终只使用NSUserDefaults在本地存储用户名和密码,并使用AFNetworking库进行身份验证。如果这些是不明智的,我会欢迎一个答案,为更好的方法提供指导。

3 个答案:

答案 0 :(得分:13)

使用AFNetworking进行身份验证并调用服务器非常棒!但我强烈反对您在NSUserDefaults中存储凭据(用户名和密码),因为内容以纯文本形式存储在plist中,只需将设备插入Mac即可读取。我建议您查看these other questionsgreat post of a well-known case以获取有关该主题的更多详细信息。

你是Keychain的正确选择,使用SSKeychain既简单又快捷。你可以在how to use SSKeychain to locally store the credentials找到这个好例子。

// Store credentials in Keychain
[SSKeychain setPassword:@"thePassword"
             forService:@"com.yourCompany.yourApp"
                account:@"theUserName"];

// Retrieve credentials from Keychain
NSString *password = [SSKeychain passwordForService:@"com.yourCompany.yourApp"
                                            account:@"theUserName"];

答案 1 :(得分:3)

如果您想进行基本身份验证,最好使用AFNetworking等网络服务。他们都是你创建一个webclient,传递一个用户名/密码组合,他们负责其余的工作。

此链接显示您需要调用的确切方法调用: http://engineering.gowalla.com/AFNetworking/Classes/AFHTTPClient.html#//api/name/setAuthorizationHeaderWithUsername:password

还有一个大型社区和大量开发人员在所有类型的iOS项目中使用AFNetworking的例子。

答案 2 :(得分:2)

我建议您使用

Lockbox

它重量轻,适用于ARC并且易于使用。