sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Arquitectura para el sistema de inicio de sesión en la pila MEAN?

Terminé combinando mi flujo de trabajo original con el ejemplo de autenticación de Express, visto aquí . Es el siguiente:

  • Cuando el usuario carga la aplicación por primera vez, se realiza una llamada http a un extremo de Express que verifica si ya existe una sesión para el usuario. Si es así, el usuario se almacena en $rootScope y se considera que ha iniciado sesión.
  • Cada vez que cambia la ruta de AngularJS, se accede al mismo punto final. La protección de rutas se especificó de forma similar a la descrita aquí . Si el punto final alguna vez devuelve que no existe ninguna sesión, $rootScope.user está desactivado (si es necesario), y el usuario es redirigido a la página de inicio de sesión.
  • Cuando se procesa el formulario de inicio de sesión, se envía a un punto final de Express. El punto final recupera al usuario de mongoDB (si existe) e intenta codificar la contraseña. Si es una coincidencia, la sesión del usuario se establece, se almacena en la base de datos mongo y el punto final devuelve el user objeto (usado para almacenar en $rootScope como se mencionó anteriormente).
  • Cada vez que se accede a más puntos finales, las funciones se pasan primero a través de restrict función que asegura que existe una sesión antes de enviar cualquier dato al cliente. Devuelve un 401 si no existe ninguna sesión, que luego se maneja en el lado Angular usando este interceptor HTTP para desactivar $rootScope.user y redirigir a la pantalla de inicio de sesión.
  • Cuando el usuario hace clic en "cerrar sesión" en el lado de Angular, la sesión se anula y se elimina de mongo DB, $rootScope.user se establece en nulo y se redirige al usuario a la página principal.