2011-08-22 11 views
7

Tengo lo que parece ser un problema simple pero no puedo encontrar una solución. He pasado horas tratando de encontrar un ejemplo que muestre cómo crear una vista, permita que el usuario ingrese una contraseña, autentique la contraseña y devuelva la vista a una vista designada. He encontrado muchos recursos geniales en bits y piezas, pero todos son algo imprecisos sobre cómo autenticar la contraseña y luego enviar al usuario a una vista designada.¿Cómo diseño e implemento la autenticación de contraseña para IOS?

Esta parece ser la mejor solución a mi problema, que es: Tengo varios archivos PDF que necesito proteger con contraseña en mi aplicación para iPad.

+0

¿cuál es su problema? la cosa isEqualToString o quieres des/cifrar? – Seega

+0

¿Qué hash o copia guardada (con suerte hash) de la contraseña está buscando para autenticar la contraseña del usuario? ¿Esta contraseña se establecerá y almacenará localmente? –

Respuesta

4

A la espera de su respuesta a mi comment--

Si desea que la contraseña que se almacena localmente, me almacenarlo (hash o de otra manera) en el llavero, para compararla con la contraseña introducida por el usuario. Más en el Apple docs here.

Recomendaría descargar el proyecto de ejemplo de Apple para un ejemplo de almacenamiento/recuperación de datos del llavero.

9

número1: Preguntar por el usuario y contraseña

presentar una visión de forma modal. si la combinación de nombre de usuario/contraseña es correcta, desestime la vista modal. alternativamente, puede usar una alerta con campos de texto.

número2: nombre de usuario tienda/contraseña de una forma segura

Uso llavero como se sugiere en la otra respuesta. El uso del llavero es tan simple como usar NSUserDefaults con CarlKeywn's PDKeychainBindingsController. Lo puede encontrar en el siguiente enlace

https://github.com/carlbrown/PDKeychainBindingsController

Editado para añadir información solicitada en el comentario:

Suponiendo que está utilizando un controlador de vista personalizada de aviso de la conexión, lo que tiene que hacer algo como esto cuando Quiere pedir una contraseña. puede estar en su aplicación didFinishLaunchingWithOptions.

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

Luego, en su LoginViewController, tiene que hacer algo como esto.

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

Tenga en cuenta que el nomUsuario cuerdas y la contraseña son capturados desde sus campos de texto en vista controlador de acceso.

+0

Esto es exactamente lo que quiero hacer, pero aún no tengo la base de conocimientos para implementar en función de lo que he visto, incluido el enlace aquí y las otras respuestas. ¿Alguna sugerencia? ¿Se puede compilar y comprar este código y luego incorporarlo a la aplicación de compra? O simplemente no veo el árbol para el bosque y no capto el flujo de las acciones. –

+0

¿Puedes hablar de esto conmigo por correo electrónico? –

0

Sin embargo, si usted quiere vender esa aplicación, tenga en cuenta, que Apple dice

El usuario puede establecer un número de cuatro dígitos de identificación personal (PIN) para prevenir el uso no autorizado del dispositivo, por lo tanto, no es necesario autenticar al usuario y no hay autenticación ni API de autorización en iPhone OS.

esto se puede encontrar en el Security Coding How-To's

1

Oliver encima en Cocoanetics.com tiene una muy buena aplicación de la pantalla de inicio de sesión de seguridad utiliza manzana. Mire la clase PinLockController en MyAppSales.

https://github.com/Cocoanetics/MyAppSales

Para el almacenamiento llavero utilizo SFHFKeychainUtils. Es una llamada de método simple para almacenar y recuperar contraseñas seguras. Pero creo que los NSUserDefaults estándar serían suficientes para sus necesidades.

(sitio útil http://gorgando.com/blog/tag/sfhfkeychainutils)

Cuestiones relacionadas