iOS開發(fā)關(guān)于指紋登錄和記住密碼

? ? 在涉及記住app狀態(tài)中吏奸,比如是否是第一次使用app;很多初學(xué)者選擇使用NSUserDefaults

NSUserDefaults使用方法也很簡單煞茫;

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

存值

[defaults?setObject:@"123"?forKey:@"phoneNum"];

defaults setObject:@"111" forKey:@"password"];

[defaults?synchronize];

取值

NSString *phoneNum = [defaults objectForKey:@"phoneNum"];

NSString *passwordStr = [defaults objectForKey:@"password"];

? ? ?但是定硝,使用NSUserDefaults 其實(shí)是一個(gè) plist 文件证芭,并不安全跷车;只適合存儲(chǔ)少量并不重要的數(shù)據(jù)牵现;在用戶名和密碼存儲(chǔ)在客戶端上,我們可以選擇放到系統(tǒng)的KeyChain里面比較安全灶搜;

使用KeyChain鑰匙串存儲(chǔ)密碼

從github下載github.com/baptistefetet/KeychainItemWrapper,導(dǎo)入KeychainItemWrapper.h祟蚀,KeychainItemWrapper.m文件,進(jìn)行編譯割卖,導(dǎo)入Security.framework庫前酿;

保存

KeychainItemWrapper *keyWrapper=[[KeychainItemWrapper alloc] initWithIdentifier:@"Keychain" accessGroup:nil];

[keyWrapper setObject:@"myChainValues" forKey:(id)kSecAttrService];

[keyWrapper setObject:@"123" forKey:(id)kSecAttrAccount];// 上面兩行用來標(biāo)識(shí)一個(gè)Item

[keyWrapper setObject:@"111" forKey:(id)kSecValueData];

讀取

KeychainItemWrapper *keyWrapper=[[KeychainItemWrapper alloc] initWithIdentifier:@"Keychain" accessGroup:nil];

NSString *name =[keyWrapper? objectForKey:(id)kSecAttrAccount];

NSString *password=[keyWrapper objectForKey:(id)kSecValueData];

清空數(shù)據(jù)保存

[wrapper?resetKeychainItem];

? ? ?當(dāng)然,Keychain也不是絕對(duì)安全的鹏溯,而且即使用戶卸載了應(yīng)用罢维,下次再重裝的時(shí)候,還是會(huì)能讀取到之前保存的密碼丙挽。

指紋識(shí)別登錄

? 指紋識(shí)別其實(shí)是調(diào)用手機(jī)系統(tǒng)里面的指紋肺孵,官方集成了調(diào)用方法匀借,使用也非常簡單;具體實(shí)現(xiàn)如下平窘;

1吓肋、導(dǎo)入系統(tǒng)頭文件LocalAuthentication/LocalAuthentication.h

2、判斷是否支持touchID;

? ? ?- (BOOL)canEvaluatePolicy:(LAPolicy)policy error:(NSError * __autoreleasing *)

error__attribute__((swift_error(none)));

3瑰艘、調(diào)用方法是鬼,實(shí)現(xiàn)指紋登錄

LAContext *context = [LAContext new]; //這個(gè)屬性是設(shè)置指紋輸入失敗之后的彈出框的選項(xiàng)

context.localizedFallbackTitle = @"再試一次";

NSError *error = nil;

if([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

error:&error])?{

NSLog(@"支持指紋識(shí)別");

[context?evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics

localizedReason:@"按Home鍵進(jìn)行指紋登錄"reply:^(BOOLsuccess, NSError * _Nullable error) {

if(success)?{

NSLog(@"驗(yàn)證成功?刷新主界面");

//這里寫登錄成功的方法,在這里可以調(diào)用keychin 紫新,來獲取密碼等數(shù)據(jù)

KeychainItemWrapper *keyWrapper=[[KeychainItemWrapper alloc] initWithIdentifier:@"Keychain" accessGroup:nil];

NSString? *passwordStr=[keyWrapper objectForKey:(id)kSecValueData];//獲取指紋保存的密碼

.................//具體實(shí)現(xiàn)登錄的代碼

}else{

NSLog(@"%@",error.localizedDescription);

switch(error.code)?{

caseLAErrorSystemCancel:

{

NSLog(@"系統(tǒng)取消授權(quán)屑咳,如其他APP切入");

break;

}

caseLAErrorUserCancel:

{

NSLog(@"取消驗(yàn)證Touch?ID");

break;

}

caseLAErrorAuthenticationFailed:

{

NSLog(@"授權(quán)失敗");

break;

}

caseLAErrorPasscodeNotSet:

{

NSLog(@"系統(tǒng)未設(shè)置密碼");

break;

}

caseLAErrorTouchIDNotAvailable:

{

NSLog(@"設(shè)備Touch?ID不可用,例如未打開");

break;

}

caseLAErrorTouchIDNotEnrolled:

{

NSLog(@"設(shè)備Touch?ID不可用弊琴,用戶未錄入");

break;

}

caseLAErrorUserFallback:

{

[[NSOperationQueue?mainQueue]?addOperationWithBlock:^{

NSLog(@"用戶選擇輸入密碼,切換主線程處理");

}];

break;

}

default:

{

[[NSOperationQueue?mainQueue]?addOperationWithBlock:^{

NSLog(@"其他情況杖爽,切換主線程處理");

}];

break;

}

}

}

}];

}else{

NSLog(@"不支持指紋識(shí)別");

switch(error.code)?{

caseLAErrorTouchIDNotEnrolled:

{

NSLog(@"TouchID?is?not?enrolled");

break;

}

caseLAErrorPasscodeNotSet:

{

NSLog(@"A?passcode?has?not?been?set");

break;

}

default:

{

NSLog(@"TouchID?not?available");

break;

}

}

NSLog(@"%@",error.localizedDescription);

}

? ?好了敲董,keychain的使用和指紋登錄基本就實(shí)現(xiàn)了,方法寫得很簡陋慰安,請(qǐng)大家見諒腋寨!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市化焕,隨后出現(xiàn)的幾起案子萄窜,更是在濱河造成了極大的恐慌,老刑警劉巖撒桨,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件查刻,死亡現(xiàn)場離奇詭異,居然都是意外死亡凤类,警方通過查閱死者的電腦和手機(jī)穗泵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谜疤,“玉大人佃延,你說我怎么就攤上這事∫目模” “怎么了履肃?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坐桩。 經(jīng)常有香客問我尺棋,道長,這世上最難降的妖魔是什么撕攒? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任陡鹃,我火速辦了婚禮烘浦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萍鲸。我一直安慰自己闷叉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布脊阴。 她就那樣靜靜地躺著握侧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嘿期。 梳的紋絲不亂的頭發(fā)上品擎,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音备徐,去河邊找鬼萄传。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜜猾,可吹牛的內(nèi)容都是我干的秀菱。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼蹭睡,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼衍菱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肩豁,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤脊串,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后清钥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琼锋,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年祟昭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斩例。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡从橘,死狀恐怖念赶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情恰力,我是刑警寧澤叉谜,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站踩萎,受9級(jí)特大地震影響停局,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一董栽、第九天 我趴在偏房一處隱蔽的房頂上張望码倦。 院中可真熱鬧,春花似錦锭碳、人聲如沸袁稽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽推汽。三九已至,卻和暖如春歧沪,著一層夾襖步出監(jiān)牢的瞬間歹撒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工诊胞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留暖夭,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓撵孤,卻偏偏與公主長得像鳞尔,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子早直,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進(jìn)行加密后保存到用戶偏好設(shè)置( [NSUserDefaul...
    彬至睢陽閱讀 2,912評(píng)論 0 7
  • 普通加密方法是講密碼進(jìn)行加密后保存到用戶偏好設(shè)置中 鑰匙串是以明文形式保存,但是不知道存放的具體位置 一. bas...
    奮斗ing0310閱讀 804評(píng)論 0 1
  • 這篇攻略是利用keychain來持久化存儲(chǔ)數(shù)據(jù)市框,所以可以利用這個(gè)來做設(shè)備唯一標(biāo)志符霞扬。另外你只要按照我的步驟操作就沒...
    Riven2018閱讀 2,569評(píng)論 2 1
  • 這些都是轉(zhuǎn)載的! iOS的keychain服務(wù)提供了一種安全的保存私密信息(密碼枫振,序列號(hào)喻圃,證書等)的方式,每個(gè)io...
    ANTI_JAM閱讀 836評(píng)論 0 0
  • 每滴勇敢的淚光粪滤,凝望旅程的方向斧拍。 攀越絕望的手掌,都是翱翔的翅膀杖小。 我們生如夏花肆汹,絢爛綻放。 墜落前予权,來歌唱昂勉。 就...
    雨知星語閱讀 481評(píng)論 0 0