2011-08-22 65 views
7

我有什麼似乎是一個簡單的問題,但我找不到解決方案。我花了數小時試圖找到一個示例,說明如何構建視圖,允許用戶輸入密碼,驗證密碼並將視圖返回到指定的視圖。我已經發現了很多關於零碎的資源,但是他們都對如何驗證密碼並將用戶發送到指定的視圖有些模糊。如何設計和實現IOS的密碼驗證?

這似乎是我的問題的最佳解決方案,它是:我有幾個pdf,我需要在我的iPad應用程序的密碼保護。

+0

什麼問題了嗎? isEqualToString的東西,還是你想解密/加密? – Seega

+0

密碼的哈希或保存的副本(希望哈希)是否在尋找對用戶密碼進行身份驗證?該密碼是否可以在本地設置和存儲? –

回答

4

在你的答案的期待我的comment--

如果你想將密碼存儲在本地,我將其存儲在Keychain(散列或其他方式),以比較用戶輸入的密碼。更多在Apple docs here

我建議下載Apple示例項目作爲存儲/檢索鑰匙串數據的示例。

9

問題1:提示用戶名和密碼

以模態方式呈現視圖。如果用戶名/密碼組合正確,請關閉模態視圖。或者,您可以使用帶有文本框的提醒。

Issue2:存儲的用戶名/在爲對方的回答提出了一個安全的方式

使用鑰匙鏈的密碼。鑰匙鏈的用法與使用Carlbrown的PDKeychainBindingsController使用NSUserDefaults一樣簡單。您也可以通過以下鏈接找到它

https://github.com/carlbrown/PDKeychainBindingsController

編輯追加在評論請求信息:

假設你正在使用的登錄提示,自定義視圖控制器,你必須做這樣的事情,當你想要提示輸入密碼。它可以在你的應用程序didFinishLaunchingWithOptions中。

LoginViewController *controller = [LoginViewController alloc]; 
      [self presentModalViewController:controller animated:YES]; 
         [controller release]; 

然後在你的LoginViewController中,你必須做這樣的事情。

PDKeychainBindings *keyChain =[PDKeychainBindings sharedKeychainBindings]; 
      if ([[keyChain objectForKey:@"User Name"] isEqualToString:userName] && [[keyChain objectForKey:@"Password"] isEqualToString:passWord]) { 
       [self dismissModalViewControllerAnimated:YES]; 
      }else { 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ERROR" message:@"Wrong User Name and/or Password\nEnter Login Information Again" 
                   delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
       [alert show]; 
       [alert release]; 
        } 

請注意,字符串userName和PassWord是從您的文本字段在登錄視圖控制器中捕獲的。

+0

這正是我想要做的,但我還沒有基於我所看到的知識庫來實施,包括這裏的鏈接和其他答覆。有什麼建議麼?這個代碼可以被構建和購買,然後合併到購買應用程序?或者我只是沒有看到森林的樹,也沒有掌握行動的流程。 –

+0

你能通過電子郵件與我討論這個嗎? –

0

但是,如果你想出售的應用程序,請記住,蘋果說

用戶可以設置一個四位數的個人識別碼(PIN),以 防止未經授權使用該設備,因此不需要對 用戶進行身份驗證,並且在iPhone OS中沒有身份驗證或 授權API。

這可以在Security Coding How-To's