Demais posts desta serie:Passport e Autenticacao LocalAutenticacao via Twitter e unindo contasAutenticacao via GoogleAutenticacao via FacebookOla a todos,Estava brincando um pouco com node.js e percebi que muitos tutoriais em portugues sobre autenticacao nao cobrem todos os passos para fazer um site minimamente estruturado que permita uma escalabilidade interessante. Sendo assim, vou tentar cobrir esta lacuna fazendo um exemplo de um site em node.js com autenticacao por usuario/senha, Facebook, Google, e Twitter. Porem, o principal foco deste exemplo estara na estruturacao da aplicacao, para que ela seja amplamente escalavel e aplicavel na maioria dos casos de websites envolvendo CRUDs, e autenticacao.Este tutorial e aplicado a qualquer um que deseja aprender mais sobre programacao web. E desejavel que se tenha algum conhecimento em programacao, principalmente na linguagem JavaScript.Lembrando que o projeto completo esta disponivel aqui, e este tutorial foi baseado neste excelente link.As ferramentas necessarias para comecarmos sao:Node.js, disponivel aquiUm bom editor de texto. Qualquer um que nao seja o bloco de notas ta valendo.Caso voce use Windows, acho interessante voce possuir ainda estas ferramentas:Visual Studio C++ Express;ConEmu, um prompt de comando MUITO melhor do que o padrao.Feito isso, com o ConEmu, vamos agora instalar o express-generator, que e um gerador de infra-estrutura minima para qualquer aplicacao em node.js, utilizando o Express:npm install -g express-generatorApos a instalacao (no qual usamos a flag -g, que indica que o pacote sera instalado globalmente), criamos o nosso projeto:express --hbs node-auth-exampleAo final desta etapa, alguns diretorios e arquivos foram criados automaticamente. Porem, ainda precisamos fazer alguns ajustes. O primeiro deles e instalar as dependencias que faltam no projeto. Isso porque o express-generator criou os arquivos basicos (incluindo o package.json com as dependencias), mas nao os instalou. Por isso, devemos instalar as dependencias, acessando a pasta do projeto e digitando:npm installAgora, nos podemos testar a nossa aplicacao. Digite npm start e acesse http://localhost:3000 no seu navegador para ver a pagina da aplicacao. Legal, ne? Nao muito? Concordo. Nossa aplicacao nao esta muito emocionante. Mas calma, que estamos so comecando.Banco de DadosUm dos elementos essenciais para nossa aplicacao e o banco de dados onde armazenaremos as informacoes dos usuarios. Utilizaremos aqui o MongoDB, porem nao precisaremos instalar localmente. Usaremos o MongoLab, que e um servico de hospedagem de bases em MongoDB (calma que tem plano free :D). Depois de fazer seu cadastro e logar no sistema, Clique em um botao chamado New, no canto superior direito. Apos o clique, aparecera a seguinte tela:Clique na imagem para ampliarMais para baixo, vemos uma aba chamada Single Node (Dentro da secao Plan) e nela, uma opcao chamada Sandbox. Clique nesta opcao, digite um nome para o banco e clique no botao Create new MongoDB Deployment. No meu caso, ficou assim:Depois, voltamos para o dashboard e clicamos no banco que acabamos de criar. A seguinte tela vai aparecer:Na aba Users, crie um usuario para acessar o banco. E nao se esqueca de copiar a URI.De volta a nossa aplicacao, vamos agora instalar o drive de acesso ao banco, o mongoose:npm install --save mongooseCaso voce esteja usando o Windows e algum erro ocorreu durante a