2011-05-07 206 views
0

我在許多應用程序中看到,您只需登錄一次應用程序,然後在下次打開應用程序時,不需要再次輸入用戶名和密碼。我怎樣才能在SFHFKeychainUtils的幫助下做到這一點?幫助iphone會話登錄

回答

1

你幾乎已經回答了你的問題。您可以使用SFHFKeychainUtils包裝器將憑證存儲在應用程序的鑰匙串中。當應用程序加載時,它會檢查是否有密碼。如果沒有,請提示用戶登錄並相應地存儲用戶名&。

// Application Loads... 

NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults]; 
NSString *username = [standardDefaults stringForKey:@"kApplicationUserNameKey"]; 

if (username) { 
    NSError *error = nil; 
    NSString *password = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:@"com.company.app" error:&error]; 

    // Check password... 
} else { 
    // No username. Prompt the user to enter username & password and store it 
    username = @"userEnteredUsername"; 
    NSString *password = @"userEnteredPassword"; 

    [standardDefaults setString:username forKey:@"kApplicationUserName"]; 
    NSError *error = nil; 
    BOOL storeResult = [SFHFKeychainUtils storeUsername:username andPassword:password forServiceName:@"com.company.app" updateExisting:YES error:&error]; 
} 

這顯然是不完整的,沒有以適當的方式組織,但你應該能夠理解基本流程。

+0

的問題是,SFHF的需求,以用戶名來檢查密碼是否存在與該用戶名.. 。所以我怎樣解決這個問題 – adit 2011-05-07 05:42:14

+0

你可以使用一個固定的用戶名。 另外,爲了將來的參考,請說清楚你到底有什麼問題。在您的原始文章中,您引用了用戶名/密碼方案。 – 2011-05-07 05:45:26

+0

是的,實際上它是正確的..在登錄頁面中,我們總是看到一個用戶名和密碼...所以在這種情況下,您建議硬編碼用戶名? – adit 2011-05-07 05:49:35

0

您可以爲此使用NSUserDefaults。

[[NSUserDefaults standardUserDefaults] setObject:username forKey:@"username"]; 
[[NSUserDefaults standardUserDefaults] setObject:password forKey:@"password"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

下一次用戶打開您的應用程序,你可以簡單地得到這個信息:

NSString *username = [[NSUserDefaults standardUserDefaults] stringForKey:@"username"]; 
NSString *password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"]; 
+1

不應將證書存儲在'NSUserDefaults';他們應該存儲在安全的位置,如鑰匙鏈。 – 2011-05-07 05:52:52

+0

很高興知道,剛剛發現一篇文章說用戶默認存儲在plist文件中的開放文本,在您執行備份時會同步。謝謝迪倫。 – romaonthego 2011-05-07 06:15:45