MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Arquitetura para sistema de login na pilha MEAN?


Acabei combinando meu fluxo de trabalho original com o exemplo de autenticação do Express, visto aqui . É o seguinte:
  • Quando o usuário carrega inicialmente o aplicativo, uma chamada http é feita para um terminal Express que verifica se já existe uma sessão para o usuário. Nesse caso, o usuário é armazenado em $rootScope e considerado conectado.
  • Sempre que a rota AngularJS muda, o mesmo endpoint é acessado. A proteção de rota foi especificada de maneira semelhante à descrita aqui . Se o endpoint retornar que não existe nenhuma sessão, $rootScope.user não está definido (se necessário) e o usuário é redirecionado para a página de login.
  • Quando o formulário de login é processado, ele é enviado para um terminal Express. O endpoint recupera o usuário do mongoDB (se existir) e tenta fazer o hash da senha. Se for uma correspondência, a sessão do usuário é definida, armazenada no mongo DB e o endpoint retorna o user objeto (usado para armazenar no $rootScope como mencionado anteriormente).
  • Sempre que outros endpoints são acessados, as funções são passadas primeiro pelo restrict função que garante que existe uma sessão antes de enviar quaisquer dados para o cliente. Ele retorna um 401 se não existir nenhuma sessão, que é tratada no lado Angular usando este interceptador HTTP para desarmar $rootScope.user e redirecionar para a tela de login.
  • Quando o usuário clica em "sair" no lado Angular, a sessão é desativada e excluída do banco de dados mongo, $rootScope.user é definido como nulo e o usuário é redirecionado de volta para a página inicial.