2011-06-04 6 views
14

Estoy en etapas tempranas (precodificación) de desarrollar una aplicación web móvil usando jQuery Mobile (miramos Sencha Touch durante algunas semanas, pero jQuery Mobile encaja mejor con las competencias de nuestro equipo). Estoy envolviendo la aplicación web jQuery Mobile con PhoneGap para crear una aplicación nativa para iPhone, iPod touch y iPad. Utilizo Django para nuestras aplicaciones web, así que pretendo hacer lo mismo aquí para el lado del servidor, con algún tipo de flujo de datos JSON/Ajax/REST para la interfaz entre la aplicación móvil y el servidor. Dado que es una aplicación solo para celulares, deberíamos tener acceso a todas las cosas de HTML5.¿Cómo implementar un esquema de inicio de sesión por primera vez para una aplicación web móvil implementada con jQuery Mobile, PhoneGap y Django?

Mientras estoy probabilidades de llegar a otros temas/preguntas para esta aplicación, aquí está mi actual de las preguntas/tema:

tengo que configurar la aplicación para que la primera vez que el usuario abre la aplicación, Deben ingresar un nombre de usuario y contraseña para autenticarse. Posteriormente, el usuario no debería tener que autenticarse a menos que el usuario haga clic en un enlace de "configuración" que le da una página para autenticarse con una cuenta o contraseña diferente. La aplicación aún debe autenticarse en el servidor cada vez que se inicia, utilizando el nombre de usuario y contraseña actuales que se ingresaron originalmente, para asegurarse de que la cuenta no se haya deshabilitado o la contraseña haya cambiado o algo así.

Soy bastante nuevo en los esquemas de autenticación. ¿Que debería hacer?

Respuesta

4

Aconsejaría no almacenar en almacenamiento local/web HTML5. Si se dirige a iOS PhoneGap, le recomendaría usar el complemento de llavero: http://blogs.nitobi.com/shazron/2010/11/06/ios-keychain-plugin-for-phonegap/

+0

Gracias por la respuesta. . . ¡Lo marcaré como aceptado si esto funciona! –

+0

Terminamos usando su complemento y funcionó hasta el momento. (Creo que mi compañero de trabajo envió un mensaje que le hizo una pregunta, la cual usted respondió amablemente). Si bien pensamos que el uso de localStorage no sería el fin del mundo, dada la forma en que se empaquetan las aplicaciones y la forma en que pretendemos limitar la distribución, ¡pero fuimos con el llavero para hacerlo de la manera correcta! –

+0

(Tenga en cuenta que esto es solo para iOS, y que no funcionaría para otras implementaciones de PhoneGap) –

-1

Pruebe HTTP Authentication with HTML Forms y vea si esto ayuda.

+0

Gracias por el enlace, sin embargo basado solo en este extracto: "esta técnica funciona en IE6 y Firefox pero se sabe que no funciona tanto en Opera como en Safari, así que si te preocupan esos navegadores, quizás quieras volver a pensar en usar esto (o pasar algún tiempo investigando por qué falla en esos navegadores) ". Supongo que no es algo que quiera seguir para mi aplicación solo para dispositivos móviles; Además, no aborda mi requisito de inicio de sesión "por primera vez". . . ¡ojalá obtenga una respuesta más puntual! :) –

-1

Dice incluir un archivo PHP en el archivo HTML, pero no estoy seguro de si PhoneGap funciona con PHP. Empecé a usar PhoneGap este fin de semana.

+0

Tienes un enlace a "eso" (es lo que está diciendo esto). Actualmente no planeo usar ningún php (ya que estoy usando python/django/wsgi en el lado del servidor) . –

+0

Me dijeron que almacene el archivo PHP dentro de su servidor y luego use AJAX para realizar transacciones de información. –

4

Aunque no vaya con Sencha Touch, hay una visión bastante buena de los problemas en HTTP Authentication.

En cuanto al almacenamiento de la información de autenticación después de un inicio de sesión inicial, puede probar local storage o una cookie (aunque es posible que necesite usar PhoneGap to enable cookie storage). HTML5 también proporciona key-value local client storage. Si las cookies de autenticación funcionan, creo que esto podría manejarse automáticamente; de lo contrario, podría implementar una verificación de autenticación document.ready dentro de una llamada Ajax usando datos de autenticación del almacenamiento local (o encrypted storage).

4

La solución KeyChain solo funcionaría en dispositivos iOS, por lo que si ese es su único objetivo, está bien.

Pero, ¿y los otros? Una especie de desperdicio usando PhoneGap pero luego desplegando solo en un framework ...

Sé que localStorage no es seguro, pero si conoce las limitaciones hay maneras de hacer un poco menos "obvio".

Aquí está el jQuery.handleStorage plugin que también maneja el cifrado AES ... ¡Podría echar un vistazo a la fuente e implementar solo las partes que necesita (en caso de que no quiera usar todo el complemento, que también es compatible con navegadores de escritorio!)

PS: No estoy afiliado de ninguna manera a ese plugin o el autor

+0

También podría usar la versión más nueva y flexible que no requiere el enlace a para formar https://github.com/jas-/ secStore.js –

1

Ésta fue una de las cuestiones candentes que tenía cuando empecé desarrollo móvil con PhoneGap. Déjame explicarte lo que hago para pasar.

Cuando los usuarios intentan iniciar sesión, ingresan el nombre de usuario y la contraseña que se enviarán a través de una llamada de servicio web al lado del servidor. Si la autenticación es exitosa, emita un token para el usuario y guárdelo en el servidor para la futura comunicación. El usuario recibirá el token y se guardará en el almacenamiento local o en el mecanismo que prefiera.

Ahora para futuras comunicaciones utilice el token, el token se pasará con cada llamada de servicio web al lado del servidor donde el servidor autenticará si el token es un token válido emitido por el servidor. Puede invalidar el token cada 72 horas o 48 horas según su requisito (o no caducar). Una vez que el token es invalidado, deberás iniciar sesión y obtener un nuevo token.

Espero que esto resuelva su problema.

Cuestiones relacionadas