javascript - signinwithemailandpassword - Autenticación para usuarios en una aplicación de una sola página
register with email and password firebase (3)
Estamos usando Angular.js y también, tenemos una página separada para el inicio de sesión. La página separada carga una aplicación de una sola página (y segura), que llama al servidor usando la solicitud http XHR, enviando nombre de usuario y contraseña. Si el servidor autenticó las credenciales, el código de javascript establece una cookie. esta cookie se puede leer desde el "otro lado", es decir, la aplicación no segura. En la cookie solo ponemos el nombre de usuario y, por supuesto, ninguna contraseña u otra información segura. entonces podemos mostrar algo como ''¿No Lior? Desconéctese en la aplicación no segura.
Lo único que se debe tener en cuenta es anular el mecanismo de las cookies de Angular para establecer una caducidad indefinida y, lo que es más importante, la ruta raíz:
$document[0].cookie = ''username='' + escape($scope.userName) + ";expires=Thu, 01 Jan 2970 00:00:00 GMT; Path=/";
He desarrollado un prototipo de aplicación de una sola página que usa Backbone en el front end y va a consumir desde una API RESTful del servidor para sus datos.
Viniendo del desarrollo de aplicaciones pesadas del lado del servidor (php y python), realmente he disfrutado el nuevo enfoque de diseño diferente con un cliente MVC grueso pero estoy confundido sobre la mejor manera de restringir la aplicación a los usuarios autenticados que inician sesión.
Prefiero tener la aplicación detrás de un inicio de sesión y también me gustaría implementar otros tipos de inicios de sesión (openid, fb connect, etc.) además del inicio de sesión nativo del sitio. No estoy seguro de cómo se hace esto y he estado buscando, sin éxito en la búsqueda de información que me lo haya dejado claro.
A grandes rasgos, ¿cuál es la mejor práctica actual para registrar usuarios y exigirles que inicien sesión para usar su aplicación de una sola página?
Una vez que un usuario inicia sesión, ¿cómo se autentican las solicitudes de API? ¿Puedo almacenar una sesión, pero cómo puedo detectar esta sesión en las llamadas a la API o tengo que pasar un token en cada llamada a la API? ¡Cualquier respuesta a esto sería muy apreciada!
Utilizamos la autenticación basada en cookies django y tenemos una página separada para el inicio de sesión y la aplicación de una sola página. Funciona bastante bien para nuestro caso de uso. Hemos utilizado un sistema de administración de sesiones basado en Backbone que describí aquí: backbone.js - manejo si un usuario está conectado o no
La forma más RESTful que he visto se basa en el flujo de credenciales del cliente OAuth, básicamente un punto final token que envía un nombre de usuario / contraseña al que se devuelve un token de acceso para esta sesión. Cada solicitud de Ajax después de eso agrega un encabezado de portador Authorization
con el token. Puede almacenar el token en una variable global para mantenerlo hasta que la página se actualice / cierre, utilice el almacenamiento local para mantener a los usuarios conectados entre sesiones o las cookies de JavaScript. Si no te gusta la idea de los tokens, puedes usar el viejo método de cookies que se envía automáticamente con cualquier solicitud de ajax.
En cuanto a facebook / google, etc. normalmente sigo el enfoque de donde asocio los userlogins externos a una cuenta. A continuación, use un baile oauth dance bastante normal (aunque puede reemplazar todas las solicitudes al servidor con solicitudes ajax con ligeras modificaciones, solo encuentro que realmente no hace mucha diferencia, ya que necesita redirecciones entre usted y el servidor). Normalmente publico una cookie cifrada para un inicio de sesión de Facebook, que luego convierto en un token usando un método similar al anterior (solo envíe la cookie con la solicitud en lugar de nombre de usuario / contraseña).