2012-07-17 101 views
4

我在哪裏可以找到一個很好的詳細教程,使用sskeychain來存儲和檢索用戶名和密碼,並在UIWebView中進行基本認證?其次,就存儲和使用基於Web的應用程序的身份驗證所需的方法而言,我是否正確? (請參見下面的說明。)關於sskeychain和iPad應用程序的基本身份驗證教程?

我發現使用一對夫婦的教程不同的方法:

據其他等問題提出建議在下面,建議使用sskeychain,以便於使用鑰匙串來存儲驗證參數。

我的計劃是在鑰匙串在設備上本地存儲用戶名和密碼的建議,並使用基本身份驗證到我的PHP代碼連接了一個UIWebView。對於經驗豐富的iOS開發人員推薦的用戶身份驗證主題,有沒有一個很好的一步一步教程xcode/Obj-C新手?

Apple文檔似乎不太有用。它不是簡單的銷售術語就是頁面,或者只是簡單地描述方法和參數,沒有很多有用的例子。

更新:

我最終只是NSUserDefaults的使用存儲的用戶名和密碼在本地和AFNetworking庫做認證。如果這些都不明智,我會歡迎提供更好方法指導的答案。

+0

正如你可能已經知道,使用'''NSUserDefaults'''存儲用戶名和密碼是不明智[的確](http://software-security.sans.org/blog/2011/01/05 /使用-鑰匙扣到商店密碼-IOS-iphone-ipad的)。請參閱下面的[我的答案](http://stackoverflow.com/a/18485797/1264909)以瞭解爲什麼並學習如何使用SSKeychain。 – veducm 2015-01-22 10:07:36

回答

3

如果您想要進行基本身份驗證,您最好使用像AFNetworking這樣的網絡服務。他們都可以創建一個Web客戶端,傳入用戶名/密碼組合,然後他們會處理剩下的事情。

此鏈接告訴你確切的方法叫你需要調用: http://engineering.gowalla.com/AFNetworking/Classes/AFHTTPClient.html#//api/name/setAuthorizationHeaderWithUsername:password

還有一個大型社區和一堆的所有類型的iOS項目使用AFNetworking開發的例子。

+1

你能舉一些「一堆例子」嗎? – jjclarkson 2012-07-26 13:25:07

+1

http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_afnetworking/ http://www.youtube.com/watch?v=Qjig7ZnH73Y – 2012-07-26 13:57:52

+0

我給你賞金,因爲我要用這種方法。我會留下答案,因爲沒有人顯示如何使用鑰匙串方法。我也試圖追查現在如何讓AFHTTPRequestOperation提供我的UIWebview的服務器在這個問題的迴應:http://stackoverflow.com/questions/11676126/pass-response-from-afhttprequestoperation-to- UIWebView的 – jjclarkson 2012-07-26 20:14:44

2

我會建議你使用

Lockbox

它是輕量級,可與ARC和易於使用。

13

使用AFNetworking進行身份驗證和調用服務器非常棒!但是我會極力阻止你將憑證(用戶名和密碼)存儲在NSUserDefaults中,因爲內容以明文形式存儲在plist中,只需將設備插入到Mac即可讀取。我建議您查看theseotherquestionsgreat post of a well-known case瞭解有關該主題的更多詳細信息。

你是對的Keychain和使用SSKeychain是容易和快速。你可以在how to use SSKeychain to locally store the credentials上找到這個好例子。

// Store credentials in Keychain 
[SSKeychain setPassword:@"thePassword" 
      forService:@"com.yourCompany.yourApp" 
       account:@"theUserName"]; 

// Retrieve credentials from Keychain 
NSString *password = [SSKeychain passwordForService:@"com.yourCompany.yourApp" 
              account:@"theUserName"]; 
相關問題