2016-11-22 51 views
0

我正在使用需要登錄Facebook的應用程序。即使應用程序離線打開應用程序,我也想使用該密碼和ID作爲使用。即使應用程序從後臺移除,用戶也可以先前加載的其他視圖控制器。現在我每次都獲取登錄頁面在離線這是我的初始視圖控制器。什麼是最好的方式來保存密碼和ID離線使用的應用程序xcode目標c

+3

keycha I N – vadian

+1

的[鑰匙扣](https://developer.apple。 com/library/content/documentation/Security/Conceptual/keychainServConcepts/01introduction/introduction.html)是唯一正確的方法。 –

回答

1

最好的方法是將密碼保存在鑰匙串中。 This tutorial is a very good start.您可以從教程中的鏈接下載包裝器。 然後你可以在鑰匙串保存密碼如下:

#import "KeychainWrapper.h" 

// Save the password in the device keychain 
KeychainWrapper *keychainWrapper = [[KeychainWrapper alloc] init]; 
[keychainWrapper mySetObject:encryptedpwd forKey:(__bridge id)kSecValueData]; 
[keychainWrapper writeToKeychain]; 

以後可以恢復密碼:

// Retrieve the pwd from the device keychain 
KeychainWrapper *keychainWrapper = [[KeychainWrapper alloc] init]; 
NSString *pwd = [keychainWrapper myObjectForKey:@"v_Data"]; 
+0

由於該網站可能會脫機,因此不鼓勵僅僅鏈接到外部網站的答案。相反,您應該複製鏈接網站的相關部分,並添加鏈接以防人們想要了解更多信息。 – EmilioPelaez

-3

將您的ID和密碼存儲在NSUserDefaults中。和您的登錄頁面已被設置爲初始視圖控制器,所以它加載每次之後的應用程序是爲killed.So,你可以採取NSUserDefaults的一個YES,並設置爲該值,如下圖所示

[[NSUserDefaults standardUserDefaults]setBool:TRUE forKey:@"isLoggedIn"]; 

寫以上代碼,成功登錄完成後。

現在在AppDelegate的DidFinishLaunchingWithOptions方法檢查下面的條件。

if([[NSUserDefaults standardUserDefaults]boolForKey:@"isLoggedIn"] == true){ 
    // open your desired view controller 
} 
else{ 
    // open Login View Controller 
} 
+2

這是一個糟糕的主意。不要**以純文本形式存儲用戶名和密碼,默認情況下用戶名和密碼非常不安全。這正是[鑰匙串](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/iPhoneTasks/iPhoneTasks.html#//apple_ref/doc/uid/TP30000897-CH208-SW1 )是。請參閱https://stackoverflow.com/questions/16459879/how-to-store-a-string-in-keychain-ios,https://www.raywenderlich.com/92667/securing-ios-data-keychain-touch -id-1password –

+0

然後,您可以編碼用戶名和密碼,然後將其保存在文檔directory.which將永遠安全 –

+0

它不是不安全的存儲,它是它的加密部分 - 爲了保持用戶名和密碼隱藏,你需要正確加密它,這是非平凡的。而不是重新創建輪子(最可能的做法是錯誤的,因爲加密是困難的),使用專門爲此目的而存在的技術:鑰匙鏈是一個更好,更安全的想法。 –

相關問題