2013-04-16 41 views
1

我正在研究一個需要與服務器通信的ios應用程序。當用戶第一次啓動應用程序時,系統會提示他輸入他的用戶名和密碼。一旦他通過身份驗證,我想讓他登錄,直到他明確退出。保持ios應用程序登錄的最佳方式是什麼?

在蘋果文檔中挖了幾個小時後,我可以指出兩種方法來實現這個想法: < 1>使用http basic/digest認證。 一旦用戶通過身份驗證,我在鑰匙串中保存用戶名和密碼。無論何時服務器需要身份驗證,通過執行連接:didReceiveAuthenticationChallenge:函數,應用程序可以加載用戶名和密碼,並構建合法的NSURLCredential。當然它會起作用,但每個請求都必須經過一次認證並經常傳輸用戶密鑰。

< 2>使用http cookie 一旦用戶通過身份驗證,服務器就會在cookie中使用唯一標記進行響應。取決於功能The URL loading system automatically sends any stored cookies appropriate for an NSURLRequest。我不確定當用戶殺死應用程序時cookie是否會丟失。

你認爲這兩種方法都可以嗎?哪一個更好?有沒有其他方法可以做同樣的事情?

我注意到許多客戶端(twitter/facebook/...)保持用戶登錄,他們使用什麼方法? 謝謝;

順便說一句,我已經在鑰匙串中保存了用戶名和密碼,但爲了保持登錄狀態,我認爲還有更多工作要做。

+0

在設備的鑰匙串保存您的用戶名和密碼。看到這個http://stackoverflow.com/questions/6972092/ios-how-to-store-username-password-within-an-app – Tirth

+0

我已經保存在鑰匙串的用戶名和密碼,但保持登錄,還有更多要做的工作。 – xjdrew

回答

0

我不關於cookie存儲。但是,當您將用戶名和密碼添加到keychain時,您必須在clean up鑰匙串應用程序獲得uninstalled時。否則,即使您的應用程序卸載後,它仍可能保留在keychain之內。由於keychain具有密鑰對存儲,但不具有基於應用程序的存儲。您可以使用NSUserDefault來存儲登錄詳細信息。我認爲這是一個更好的方式來做到這一點..

0

試試這個鑰匙串:

KeyChain sample code

你也可以使用NSUserDefault

+1

nope nsuserdefaults不是一個安全的方式,鑰匙串就是它。使用鑰匙串 –

+0

是的,你是正確的鑰匙串是最好的方式。 –

0

嘗試這一個,並保存在NSUserDefaults的身份驗證的用戶名密碼。它在全球範圍內提供應用程序。

爲了節省您的數據試試這個

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:isValid forKey:@"Username"]; 
[defaults setObject:accessLevel forKey:@"Password"]; 

而對於獲取數據試試這個

NSUserDefaults *defaultsCheck = [NSUserDefaults standardUserDefaults]; 
NSString * userIDCheck = [defaultsCheck objectForKey:@"Username"]; 
NSString *accessLevelCheck = [defaultsCheck objectForKey:@"Password"]; 
+1

對於用戶名/密碼使用NSUserDefaults不是一個好主意。相反,你應該使用Keychain,它是安全的,即使你刪除你的應用程序並重新安裝,你的應用程序仍然會保留。看看使用鑰匙串的文檔。 – Maziyar

相關問題