2014-01-10 34 views
1

當我對用戶進行身份驗證時,我需要在設備上的某處存儲userId(主鍵),以便稍後使用它來提取與用戶相關的其他信息,例如「getAccounts(userId)」。在iPhone上存儲憑據的位置(用戶名或userId)?

我想我可以使用NSUserDefaults來存儲userId?

有什麼建議嗎?

更新:我還需要提到的一件事是,userId是自動生成和自動增量像3,4,5,6,7等。

+0

聽起來對我來說是個好主意。 – Wez

+0

你有沒有辦法保護這個方法需要一個令牌?所以用戶不能真的只是增加一個值來獲得其他用戶信息? –

+0

好問題!目前沒有我不通過任何令牌。我會改變我的方法來包含令牌。 –

回答

2

保持在NSUSerDefault沒關係 - 但你不應該保持userId那裏。有些人可以操縱這些數據,更改userId並控制其他人帳戶。

在用戶授權後,請始終保持登錄名+密碼或生成一些令牌,以避免在用戶丟失手機時丟失可能被盜取的完整憑證。

你也需要擴展API總是需要令牌(或登錄,passowrd)爲每一個操作 - 否則就太容易侵入的功能,如「getAccounts(用戶ID)」

對於密碼最好的意志將其作爲其他人建議的鑰匙串,或者至少在將其保存到NSUserDefaults之前將其加密。

當然你在你的問題提出的作品,以及 - 但它是非常糟糕的做法,並沒有任何的應用程序應該是建立這種方式,這樣對待我的回答更是良好實踐的建議。

+0

究竟.....你應該避免將帳戶及我建議簡單隻需保持(登錄名,密碼)的鑰匙串併發送至服務器的每個操作的緣故..... – Piyuesh

2

NSUserDefaults是保存諸如用戶名或各種首選項等有用信息的快速位的最簡單的地方。

如果您要保存密碼,則需要通過Keychain Services將它們存儲在鑰匙串中。

+0

謝謝!聽起來是一個好主意!最簡單的 –

+0

並不總是最好的想法:) –

+0

@GrzegorzKrukowski您有任何建議??? –

相關問題