2012-01-03 49 views
0

我正在做一個應用程序,其中包括一個userlogin,只有用戶登錄,然後只有它將重定向到主頁面。但我想做一次性登錄,如Facebook登錄或eBay登錄,如果用戶唱歌,用戶名需要進行維護,不需要進一步登錄,但是如果應用程序從iphone中刪除,那麼它的ok.now當應用程序從iphone memeory(多任務處理)中刪除時,我的應用程序需要登錄。如何設置一次性登錄我的應用程序? Registers Nipin如何爲iPhone應用創建一次登錄?

回答

5

密碼和其他敏感的用戶數據應該存儲在鑰匙串。鑰匙串的API是純C,可通過重新連接安全框架來獲得。

這個API有點麻煩。我通常使用Buzz Andersen提供的出色的Objective-C包裝器at github

了一次登錄的應用程序正常工作流程是用類似這樣的僞啓動:

if (stored password exists) { 
    if (login with stored password succeeds) { 
     exit, we are done 
    } else { 
     remove password from secure storage 
    } 
} 
if (user provides new password) { 
    if (login with user provided password success) { 
     store user provided password in secure storage 
    } 
} 
+0

感謝您提供的信息,但是我對這個IOS sdk非常新穎,所以如何將gitbub代碼集成到我的項目中?我只需將這些文件拖放到我的應用程序中,然後在Appdelegate中導入哪個類? – stackiphone 2012-01-03 10:21:35

+0

@stackiphone在這種情況下,只需將'SFHFKeychainUtils.h'和'SFHFKeychainUtils.m'文件拖放到您的項目中即可。 – PeyloW 2012-01-03 10:27:43

+0

先生我在哪裏放這個代碼?在viewdidfinishLaunching?謝謝 – stackiphone 2012-01-03 10:28:47

-3

爲此您必須使用NSUSerDefaults保存用戶名和密碼。當應用程序啓動時,從NSUserDefaults獲取數據並檢查屏幕背後的代碼。當用戶註銷時,從NSUserDefaults中刪除這些值。

+1

不!切勿使用用戶默認值來存儲敏感數據,這與將密碼存儲在明文文本中一樣糟糕。而是使用鑰匙串服務。 – PeyloW 2012-01-03 10:12:29

-3

,我相信他們的意思說每次應用程序啓動是,做一個檢查得到的值(用戶名密碼等)從NSUserDefaults。如果存在,請不要顯示登錄屏幕並推送您希望顯示的視圖控制器。如果沒有,則彈出登錄屏幕,當用戶輸入他們的信息時,將值保存到NSUserDefaults一次。

NSUserDefaults獲取值,您可以:

NSString * username = [[NSUserDefaults standardUserDefaults] valueForKey:@"Username"]; 
+0

我發佈答案的意圖是讓它更清楚地說明如何使用'NSUserDefaults'。 – 2012-01-03 11:57:04

0

我會用KeyChainWrapper和存儲的密碼鍵的用戶名。由於密碼是敏感的,它不應該存儲在NSUSerDefaults中。

很好的鏈接:http://www.thomasverbeek.com/blog/?p=351

你可以做的是用戶名在存儲NSUserDefaults的,然後在鑰匙串基於用戶名搜索密碼。如果存在,您可以使用用戶名和密碼撥打電話。