Pregunta

Tengo un sitio móvil JQuery simple creado usando ASP.NET MVC 2 y utiliza la autenticación de formularios básicos para otorgar acceso al sitio.

La aplicación es un diario de trabajo simple que permite a un gerente regional ver los detalles sobre los problemas actuales asignados a un equipo regional.

Cuando hay una conexión móvil disponible, la aplicación funciona muy bien, pero debido a la falta de señal, necesitamos investigar la posibilidad de hacer que el núcleo de la aplicación esté disponible fuera de línea. He estado investigando la posibilidad de llevar la aplicación fuera de línea usando HTML 5 pero no puedo encontrar ninguna información sobre los usuarios de autenticación.

La aplicación es muy básica y esencialmente tiene dos pantallas de lista diferentes que perforan los detalles del trabajo.

1. Login    
    1.1 Job List    
        2. Job Details

    1.2 Team Diary    
        2. Job Details

Creo que sería bastante fácil crear una versión fuera de línea de los datos que permitan navegar por el diario cuando no hay una conexión disponible, pero no puedo encontrar ninguna información sobre un sitio que requiera autenticación antes de que llegue a las páginas que se permiten ser desconectado.

El contenido no son datos confidenciales, pero obviamente el cliente no quiere que nadie pueda navegar por el diario de trabajo en lo que es un sitio web que se enfrenta al público.

¿Cuál es la forma preferida de autenticar a los usuarios en un sitio que podría usarse fuera de línea?

¿Fue útil?

Solución

Estoy reasentando un sitio MVC3 para uso fuera de línea y me estoy encontrando con algunos de los mismos problemas.

Una cosa que debe tener en cuenta es que el navegador intenta descargar todos los archivos enumerados en Cache.Manifest de inmediato. Esto causa un problema si el usuario aún no ha iniciado sesión y tiene una redirección clásica a una página de inicio de sesión si el usuario no está autenticado. Deberá abrir una vista "estática" de estas páginas para el acceso público y dejar que su JavaScript determine si el usuario ha iniciado sesión o no antes de intentar recuperar/enviar actualizaciones. Esto permitirá que el navegador descargue las páginas estáticas sin contenido y permitirá que su JavaScript administre el contenido según sea necesario.

Mi aplicación usa un método prestado Jim Lehmer detectar la conectividad en línea.

Una vez que encontramos que estamos conectados, creé una pequeña acción en el controlador de mi cuenta que devuelve bien si el usuario está autenticado o no:

    public JsonResult IsAuthenticated()
    {
        return Json(new { Request.IsAuthenticated }, JsonRequestBehavior.AllowGet);
    }

¡Espero que ayude!

Otros consejos

Ah. Veo lo que estás pidiendo ahora. Sugeriría lo siguiente.

Cuando el usuario accede por primera vez a la aplicación, verifica la existencia de datos locales (¿los datos locales correctos?), Y si esos datos locales existe, suponga que el usuario tiene acceso al sistema. Ahora verifique si hay una conexión a Internet, si existe, solicite las credenciales adecuadas, si ninguna conexión funciona fuera de línea. Por lo tanto, pueden trabajar felizmente fuera de línea.

Una vez que ese usuario recupera una conexión a Internet, antes de sincronizar local con remoto, solicite al usuario sus credenciales. En el caso de que originalmente tenían conectividad a Internet, la aplicación sin duda almacenará una token de su autenticación adecuada y puede sincronizar sin duda. De lo contrario, solicite una contraseña ahora.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top