2010-08-31 71 views
1
  1. 我正在其中 用戶名和密碼是必需的 所有的屏幕,使請求 服務器的IPhone應用程序,和我想的 節省 NSUserDefault的2個值,而不是通過一個 對象周圍。在NSUserDefaults中保存全局值是否安全/良好實踐?

  2. 我也在想,如果用戶一旦已經登錄, 和使用的應用程序,然後再用戶 不必再次輸入他/她的細節 這將是有益的。

但我很好奇,如果這將是安全的/良好的做法用於第一要求?

回答

6

我沒有什麼反對將這些數據保存在用戶的默認值。我沒有得到的是在每個請求中公開用戶憑證的想法。

我建議你一次要求憑證,並與你的服務器進行身份驗證並返回一個「會話令牌」。保存此令牌並使用它來驗證每個請求上的用戶。 (這意味着您將令牌存儲在服務器上,或者您將使用算法檢查令牌)

這樣做,您不會始終公開用戶憑據,您可以控制會話,並且可以在需要時將其終止,強制用戶再次登錄。

對於更復雜的實現,您可以使用Google for OAuth或XAuth以及一些相關的身份驗證方法。

乾杯, VFN

+0

問題是服務器沒有這個「會話令牌」的機制!這就是爲什麼我已經走過這條路。這就是在api頁面上寫的「所有請求都需要驗證。」 – itsaboutcode 2010-08-31 00:47:52

+0

是的,但驗證可以反對任何事情,不一定是登錄名和密碼。只有在您的情況下,您無法控制服務器,因此,在這種情況下,您需要在每次通話時發送憑證。 – vfn 2010-08-31 00:59:22

+0

邑多數民衆贊成的問題,我無法控制服務器端:(並要求發送憑據與每個請求。謝謝vfn。 – itsaboutcode 2010-08-31 01:02:14

3

這是合理的保存要生存下去你的應用程序被殺害並重新啓動NSUserDefault全局值(可IOS4.0下發生)。

密碼應該保存在內存中(可能是單件模型對象)或鑰匙串中,因爲各種iTunes備份數據庫可能會暴露存儲在用戶默認值中的東西。