弹弹岛iOS咋保存ios企业账号 打包发布密码

5646人阅读
iOS应用开发(8)
作为一名开发者, 你需要对你的用户安全负责. 请问, 你是怎么保存用户的的?
直接保存到plist里?
? AES? DES? 能保证你的代码不被反编译拿到你的Key?
这也未免太不了吧. 我Google了一下, 国内的开发者根本没有注意到这个问题.
系统中有个程序叫””
(), 它不仅仅是你申请开发证书用的, 哈哈. 它可以存!
这也是苹果给出的保存密码的最佳解决方案.
用过PushFix包(就是那个修复的小工具)的国内iPhone用户应该还有印象.
用原生的Security.framework就可以实现的访问, 读写, 但是只能在真机上进行, 模拟器会出错.
在Github上, 有个封装的非常好的类 来实现这个功能, 让你既能在模拟器又能在真机上访问.
//获取密码
+&(NSString&*)&getPasswordForUsername:&(NSString&*)&username&andServiceName:&(NSString&*)serviceName&error:&(NSError&**)&error;
//保存密码
+&(void)&storeUsername:&(NSString&*)&username&andPassword:&(NSString&*)&passwordforServiceName:&(NSString&*)&serviceName&updateExisting:&(BOOL)&updateExisting&error:(NSError&**)&error;
//删除密码
+&(void)&deleteItemForUsername:&(NSString&*)&username&andServiceName:&(NSString&*)serviceName&error:&(NSError&**)&error;
源码地址: /ldandersen/scifihifi-iphone/tree/master/security
原文:http://blog.csdn.net/fengsh998/article/details/7920368
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:67885次
排名:千里之外
(2)(5)(2)(1)iOS中Keychain保存用户名和密码 - 博客频道 - CSDN.NET
目前最有趣的等待,是未来
有用户就用用户名和密码,而现在的应用都少不了一个保存用户名和密码用于自动登录的功能,本文介绍使用iOS自带的Keychain方法保存用户名和密码。
说到保存用户名和密码,以前有用过本地的数据库来保存,也接触过用userdefault来保存,后来在一个项目中发现了一个新的方法——用Keychain来保存。用过mac的人都不会对钥匙串感到陌生,这也是一个钥匙串,比起用数据库或者userdefault什么的来保存,这种方法会更安全一些,而且保存的内容不会随着应用的更新等删除,可以始终保存在沙盒中。这个方法还有一个优势,就是可以让用户名和密码在不同应用之间使用,一次保存,多次使用,这里推测一下,不知道使用第三方登录功能是不是用这个来实现的呢。一般自动登录不外乎对用户名和密码的保存、读取和修改,这里也主要讲这个三个功能的实现。
1、准备工作
要使用Keychain来操作,前期的准备还是有点麻烦的,因为不是直接可以拿来用的,而需要在工程中额外添加一些东西:
<span style="color:#)、导入secutity.framework
第一步需要额外导入一个安全框架,导入方法如下:
先在左侧文件列表中选中项目名称,然后选中TARGETS,中间界面选中Build Phases,在Link Binary With Libraries中点击加号,搜索找到secutity.framework导入即可:
这样就把secutity.framework导入到了我们的工程中来。
<span style="color:#)、添加KeychainItemWrapper.h/.m文件
除了secutity.framework,我们还要添加一个东西到工程中,就是KeychainItemWrapper.h和KeychainItemWrapper.m文件,这两个也需要额外引入才能在我们自己的代码中引用,就当成是引用第三方类库一样吧,这两个文件直接复制进工程里面就好了,可以在中复制。
<span style="color:#)、禁用KeychainItemWrapper.h/.m文件的ARC
现在已经流行ARC机制,我们创建工程也是默认的全局使用ARC,但是这两个文件因为年代久远吧,还不是ARC而是MRC,可以在其代码中看到大量MRC的内容比如release之类的,如果不加修改,直接运行会报很多错误,所以有两个解决办法,第一个把所有报错的地方由MRC方式改成ARC方式,这种方法太麻烦,第二种就是直接禁用这个文件的ARC就好了,方法如下:
先在左侧文件列表中选中项目名称,然后选中TARGETS,中间界面选中Build Phases,然后在Compile Sources中找到要禁用的文件,这里是KeychainItemWrapper.m,然后双击修改其Compiler Flags&#20540;为 -fno-objc-arc,如下:
这样再运行就不会出错了。
以上是准备工作,接下来进入代码。
2、使用Keychain保存用户名与密码
一般在应用的登录界面都会有保存用户名和密码的选项,这里我们模拟一下,在界面中放两个输入框用来输入用户名和密码,然后一个登录按钮来实现跳转和保存,界面如下:
把输入框和按钮都关联到我们的ViewController中去,然后在登录按钮的响应方法中实现保存功能,注意,在我们的ViewController中要导入Keychain文件才能正常使用:
// ViewController.m中
#import &KeychainItemWrapper.h&
- (IBAction)login:(id)sender {
NSString *username = self.usernameLabel.// 获取输入的用户名
NSString *password = self.passwordLabel.// 获取输入的密码
if (![username isEqualToString:@&&] && ![password isEqualToString:@&&]) {// 非空则保存
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@&Login& accessGroup:nil];// 1
[keychain setObject:username forKey:(__bridge id)(kSecAttrAccount)];// 2
[keychain setObject:password forKey:(__bridge id)(kSecValueData)];// 3
其他的不用多说,主要说说三行Keychain的操作:
1:这里是创建了一个keychain的对象,用来保存用户名和密码,创建的过程中有两个参数,一个是Identifier,这个参数是一个字符串,用来标识keychain,以后都根据这个标识来找到这里保存的内容;第二个是创建组,如果要在多个应用中使用Keychain,就要设置这个参数,是组的标识,这里我们只在本应用使用,就设为nil。Keychain还有很多属性可以设置,这里是最简单的用法,基本可以满足需求,如果想了解更多,可以继续查找资料了解。
2:我们的目的就是保存用户名和密码,Keychain保存非常简单,这一句代码就把用户名保存进去了,Keychain自己带有一些key&#20540;,各有各的用处,最常用的就是保存用户名和密码的,一般我们保存用户名就是放在这个Key中就好了。
3:同2一样,一般我们保存密码就是放在这个Key中的。除了这两个以外,还有一些其他的Key,有兴趣的可以继续了解。
这样我们就将用户名和密码保存在Keychain中了,非常简单吧。
3、获取用户名和密码
在一般的思路中,第一次登陆成功后,我们将已经验证正确的用户名和密码保存在keychain里,以后每次打开应用,我们就应该从keychain中获取曾经保存的用户名和密码来通过验证而不需要用户再次输入,对吧,要读取也非常简单,我们先创建一个界面,放两个Label用来在登录后从keychain中获取用户名和密码并显示出来,如下:
其实获取和保存就是两个相反的过程,也就是先通过之前保存时设的标识找到keychain,然后获取对应Key的内容:
// InfoViewController.m中
#import &KeychainItemWrapper.h&
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@&Login& accessGroup:nil];// 通过同样的标志创建keychain
// 获取对应Key里保存的用户名和密码
NSString *username = [keychain objectForKey:(__bridge id)(kSecAttrAccount)];
NSString *password = [keychain objectForKey:(__bridge id)(kSecValueData)];
self.usernameLabel.text =
self.passwordLabel.text =
一目了然,跟保存几乎一样只是设置变成了读取,这样就可以输入什么,显示什么了:
4、修改keychain中的&#20540;
一般有用户的应用,都会提供修改密码的功能,如果用户登录后修改了密码,我们总不能要求用户退出登录重新登录一次才能保存密码对吧,另一个情况,如果用户换了一个账号登录,那就是用户名和密码都改了,所以修改keychain中的&#20540;也是一个比较常用的功能。我们在界面中加一个新密码的输入框,加一个修改密码的按钮,再加一个显示新密码的Label,如图:
其实修改keychain中的&#20540;也特别简单,就跟修改dictionary中的&#20540;一样,通过标识找到keychain后,重新set对应Key的&#20540;就好了:
// InfoViewController.m中
#import &KeychainItemWrapper.h&
- (IBAction)changePW:(id)sender {
NSString *nPW = self.nPWText.// 获取新密码输入框的值
if (![nPW isEqualToString:@&&]) {// 非空则修改
KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@&Login& accessGroup:nil];// 找到keychain
[keychain setObject:nPW forKey:(__bridge id)(kSecValueData)];// 设置密码对应Key的值
//重新读取并显示
NSString *nPassword = [keychain objectForKey:(__bridge id)(kSecValueData)];
self.nPWLabel.text = nP
[self.nPWText resignFirstResponder];// 收起键盘
这样就可以修改了,再次获取的时候就是新设的&#20540;了,如下:
Keychain要完全了解,还是比较复杂的,但是最常用的功能,其实也就上面这些了,用起来非常简单方便,以后有机会再详细了解更多的内容吧。
这里可以下载到我的示例工程:
转载请注明出处
排名:第2354名
Name: Cloudox
(95)(84)(84)(3)(11)(6)(143)(46)(1)(2)iOS开发之——保存用户名和密码实现记住密码库_伊咪宝儿_新浪博客
iOS开发之——保存用户名和密码实现记住密码库
使用Keychain存储用户敏感信息
iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。从iOS
3.0开始,跨程序分享keychain变得可行。
如何需要在应用里使用使用keyChain,我们需要导入Security.framework
,keychain的操作接口声明在头文件SecItem.h里。直接使用SecItem.h里方法操作keychain,Keychain
Services提供了一系列api用以存取和更新keychain item:
SecItemAdd(添加)
SecItemUpdate(更新)
SecItemCopyMatching(查找)
SecItemDelete(删除)
这些方法直接使用有点麻烦,需要进行面向对象的封装。我写了一个简单的例子,只是用来保存用户名和密码,以实现记住密码这项功能。
下面贴一部分代码&#8203;:&#8203;
&#65279;MyKeyChainHelper.h
&&#65279;MyKeyChainHelper.m-1
&#65279;MyKeyChainHelper.m-2
&#65279;MyKeyChainHelper.m-3
一、把“MyKeyChainHelper.h”和“MyKeyChainHelper.m”拷贝到我们项目,并导入Security.framework。
注意:大量报错&#8203;
&#65279;ARC不兼容报错
解决方案:选择项目/Targets/Build
Phases/Compile Sources击"KeychainItemWrapper.m" 输入 "-fno-objc-arc".运行即可。
二、在登陆页面导入
"MyKeyChainHelper.h"&#8203;
博客等级:
博客积分:0
博客访问:921
关注人气:0
荣誉徽章:}

我要回帖

更多关于 ios企业账号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信