2011-08-22 13 views
7

Ho quello che sembra essere un problema semplice ma non riesco a trovare una soluzione. Ho passato ore a cercare un esempio che mostra come costruire una vista, consentire a un utente di inserire una password, autenticare la password e restituire la vista a una vista designata. Ho trovato molte grandi risorse su bit e pezzi, ma sono tutti vaghi su come autenticare la password e quindi inviare l'utente a una vista designata.Come progettare e implementare l'autenticazione della password per IOS?

Questa sembra essere la soluzione migliore per il mio problema, che è: ho diversi pdf che ho bisogno di proteggere con password nella mia app per iPad.

+0

qual è il problema? la cosa isEqualToString o vuoi de-/criptare? – Seega

+0

Quale hash o copia salvata (si spera hash) della password si sta cercando di autenticare la password dell'utente contro? Questa password sarebbe stata impostata e memorizzata localmente? –

risposta

4

In attesa della vostra risposta alla mia comment--

Se si desidera che la password da memorizzare localmente, vorrei conservarlo (hash o meno) nel portachiavi, da confrontare con la password immessa dall'utente. Maggiori informazioni su Apple docs here.

Si consiglia di scaricare il progetto di esempio Apple per un esempio di archiviazione/recupero dei dati dal portachiavi.

9

Issue1: Richiedi username e password

Presente una vista modale. se la combinazione nome utente/password è corretta, elimina la vista modale. in alternativa, puoi utilizzare un avviso con campi di testo.

Numero 2: Conservare username/password in modo sicuro

Usa portachiavi come suggerito in altra risposta. L'utilizzo della catena di chiavi è semplice quanto l'utilizzo di NSUserDefaults con PDKeychainBindingsController di Carlbrown. Lo si può trovare al link qui sotto

https://github.com/carlbrown/PDKeychainBindingsController

A cura di aggiungere informazioni richieste in commento:

Supponendo che si sta utilizzando un controller visualizzazione personalizzata per prompt di login, devi fare qualcosa di simile quando si vuoi richiedere la password. può essere nella tua applicazione didinfinishedLaunchingWithOptions.

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

Quindi nel tuo LoginViewController, devi fare qualcosa di simile.

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]; 
        } 

Si prega di notare che le stringhe userName e PassWord vengono catturate dai campi di testo nel controller della vista di accesso.

+0

Questo è esattamente ciò che voglio fare, ma non ho ancora la base di conoscenza da implementare in base a ciò che ho visto, incluso il link qui e le altre risposte. Eventuali suggerimenti? Questo codice può essere compilato e acquistato e quindi incorporato nell'app di acquisto? O sto semplicemente non vedendo l'albero per la foresta e non cogliendo il flusso delle azioni. –

+0

Puoi parlarci di questo con me via email? –

0

Tuttavia, se si desidera vendere tale applicazione, tenere a mente, che Apple dice

L'utente può impostare una a quattro cifre numero di identificazione personale (PIN) per impedire l'uso non autorizzato del dispositivo, quindi non è necessario che l'utente sia autenticato e non ci siano autenticazioni API di autorizzazione o nel SO iPhone.

Questo può essere trovato nel Security Coding How-To's

1

Oliver sopra a Cocoanetics.com ha una bella attuazione della schermata di login di sicurezza mela utilizza. Guarda la classe PinLockController in MyAppSales.

https://github.com/Cocoanetics/MyAppSales

Per la conservazione portachiavi che uso SFHFKeychainUtils. È una semplice chiamata di metodo per archiviare e recuperare password sicure. Ma penso che NSUserDefaults standard sia sufficiente per le tue esigenze.

(sito utile http://gorgando.com/blog/tag/sfhfkeychainutils)

Problemi correlati