MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Architecture pour le système de connexion sur la pile MEAN ?

J'ai fini par combiner mon flux de travail d'origine avec l'exemple d'authentification d'Express, vu ici . C'est comme suit :

  • Lorsque l'utilisateur charge initialement l'application, un appel http est effectué vers un point de terminaison Express qui vérifie si une session existe déjà pour l'utilisateur. Si c'est le cas, l'utilisateur est stocké dans $rootScope et considéré comme connecté.
  • Chaque fois que la route AngularJS change, le même point de terminaison est accessible. La protection des routes a été spécifiée d'une manière similaire à celle décrite ici . Si le point de terminaison renvoie qu'aucune session n'existe, $rootScope.user n'est pas défini (si nécessaire) et l'utilisateur est redirigé vers la page de connexion.
  • Lorsque le formulaire de connexion est traité, il est publié sur un point de terminaison Express. Le point de terminaison récupère l'utilisateur à partir de mongoDB (s'il existe) et tente de hacher le mot de passe. S'il s'agit d'une correspondance, la session de l'utilisateur est définie, stockée dans la base de données mongo et le point de terminaison renvoie le user objet (utilisé pour stocker dans le $rootScope comme mentionné précédemment).
  • Chaque fois que d'autres points de terminaison sont accédés, les fonctions sont d'abord transmises via le restrict fonction qui s'assure qu'une session existe avant d'envoyer des données au client. Il renvoie un 401 si aucune session n'existe, qui est ensuite gérée du côté angulaire en utilisant cet intercepteur HTTP pour désactiver $rootScope.user et rediriger vers l'écran de connexion.
  • Lorsque l'utilisateur clique sur "se déconnecter" du côté angulaire, la session est désactivée et supprimée de la base de données mongo, $rootScope.user est défini sur null et l'utilisateur est redirigé vers la page d'accueil.