2017-08-11 47 views
0

我正在使用xcode8 + swift3開發iOS應用程序。重新安裝應用程序後鑰匙串存儲的密碼仍然可用

我已經創建了將用戶密碼存儲到鑰匙串以及從鑰匙串中讀取密碼的功能。您可以參考here瞭解我創建的功能。

我一般注意到的問題是,即使我卸載了應用程序,當我重新安裝應用程序時,我的應用程序從鑰匙串讀取的密碼是以前安裝的應用程序(已經卸載)的舊密碼。

我的問題是,解決這個問題的最佳做法是什麼?

+0

物品存放在鑰匙鏈仍然存在,即使你刪除的應用。如果你不想要舊的細節,你可以在安裝應用程序後刪除鑰匙串項目。 –

+0

是的,我認爲是相同的,但在實踐中哪裏是最好的地方? AppDelegate didFinishLaunchingWithOptions? –

+0

你可以在userdefaults中存儲一個布爾標誌,並檢入AppDelegate。當您刪除應用程序時,USerf將被刪除,所以應該可以工作! –

回答

0

在應用程序的委託,你可以做:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    BOOL savedInKeychain = [[NSUserDefaults standardUserDefaults]boolForKey:@"savedInKeychain"]; 
    if(!savedInKeychain){ 
    //There is no keychian data saved in this app 
    //check if data exisst in keychain 
    if(kechainData){ 
     //Delete keychain data 
    } 

    return YES; 
} 

後來保存在鑰匙串數據,在userdefaults設置savedInKeychain爲YES之後。

0

鑰匙串在卸載後被加密並保留。 NSUserdefaults未加密(不建議存儲密碼)並且在卸載後不持久。

要檢查是否是國內首家推出應用程序和復位鑰匙扣您可以使用此:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"]) 
    { 
     // reset keychain 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 
    return YES; 
} 
相關問題