在哪里可以找到使用sskeychain存储和检索用户名和密码以及在UIWebView中进行基本身份验证的详细教程?其次,就基于Web的应用程序存储和使用身份验证所需的方法而言,我是否在正确的轨道上? (见下面的解释。)
我发现了一些使用不同方法的教程:
根据以下其他SO问题的建议,建议使用sskeychain以便更轻松地使用钥匙串存储身份验证参数。
我的计划是按照建议在钥匙串中的设备上本地存储用户名和密码,并使用基本身份验证通过UIWebView连接到我的PHP代码。是否有经验丰富的iOS开发人员推荐的有关用户身份验证主题的xcode / Obj-C新手的详细分步教程?
Apple文档似乎不太有用。它可以是简单的销售术语页面,也可以是方法和参数的头部描述,没有很多有用的例子。
更新
我最终只使用NSUserDefaults在本地存储用户名和密码,并使用AFNetworking库进行身份验证。如果这些是不明智的,我会欢迎一个答案,为更好的方法提供指导。
答案 0 :(得分:13)
使用AFNetworking进行身份验证并调用服务器非常棒!但我强烈反对您在NSUserDefaults
中存储凭据(用户名和密码),因为内容以纯文本形式存储在plist中,只需将设备插入Mac即可读取。我建议您查看these other questions和great 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)