Demais posts desta serie:Setup LocalAutenticacao via Twitter e unindo contasAutenticacao via GoogleAutenticacao via FacebookOla a todos,Continuando nossa serie de posts sobre autenticacao com Node.JS, agora vamos finalmente instalar, configurar e testar o passport, que e a biblioteca que vai gerenciar os nossos logins.Lembrando que o projeto completo esta disponivel aqui, e este tutorial foi baseado neste excelente link.Para nossa aplicacao, trabalharemos com as seguintes rotas (por enquanto)://local/signin (get e post), formulario de login/local/signup (get e post), formulario de cadastro/signout, sair da pagina/dashboard, pagina acessada apos o loginViews iniciais e Modelo de usuarioPorem, antes de configurar e instalar o passport, precisamos fazer as views iniciais da nossa aplicacao. Serao 3 (index, signin, signup). Porem, vamos usar o handlebars (que ja instalamos via express-generator) para facilitar um pouco a nossa vida. Utilizando o handlebars, podemos criar layouts para a nossa pagina, evitando que se tenha muito codigo duplicado.Primeiro, vamos editar o arquivo layout.hbs, substituindo o que estiver la pelo seguinte conteudo:<!DOCTYPE html> <html> <head> <title>Exemplo de autenticacao com Node.JS, Passport e Express.JS</title> <link rel='stylesheet' href='//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css' /> <link rel='stylesheet' href='//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css' /> <style> body: { padding-top : 80px; } </style> </head> <body> <div class="container"> {{#if message }} <div class="alert alert-danger">{{message}}</div> {{/if}} {{{body}}} </div> </body> </html> E depois, substituindo o conteudo do arquivo index.hbs por este:<div class="jumbotron text-center"> <h1><span class="fa fa-lock"></span> Node Auth</h1> <p>Choose your Destiny:</p> <a href="/local/signin" class="btn btn-default"><span class="fa fa-user"></span> Local Login</a> <a href="/local/signup" class="btn btn-default"><span class="fa fa-user"></span> Cadastro Local</a> </div> Agora, se nos executarmos a aplicacao, nossa pagina inicial tera esta cara, mais ou menos:Em seguida, vamos criar as paginas restantes na pasta views (signin, signup).Primeiro a signin.hbs:<div class="col-sm-6 col-sm-offset-3"> <h1><span class="fa fa-sign-in"></span> Signin</h1> <form action="/local/signin" method="post"> <div class="form-group"> <label>Email</label> <input type="text" class="form-control" name="email"> </div> <div class="form-group"> <label>Senha</label> <input type="password" class="form-control" name="password"> </div> <button type="submit" class="btn btn-warning btn-lg">Acessar</button> </form> <hr> <p><a href="/local/signup">Criar uma conta</a></p> <p><a href="/">Home</a></p> </div> Depois, a signup.hbs:<div class="col-sm-6 col-sm-offset-3"> <h1><span class="fa fa-sign-in"></span> Signup</h1> <form action="/local/signup" method="post"> <div class="form-group"> <label>Email</label> <input type="text" class="form-control" name="email"> </div> <div class="form-group"> <label>Senha</label> <input type="password" class="form-control" name="password"> </div> <button type="submit" class="btn btn-warning btn-lg">Cadastrar</button> </form> <hr> <p><a href="/local/signin">Ja possui uma conta?</a></p> <p><a href="/">Home</a></p> </div> Agora, precisamos adicionar as rotas necessarias no arquivo config/routes.js: '/local/signin':{ controller:'LoginController', action:'signin', }, '/local/signup':{ controller:'LoginController', action:'signup', }, So falta criar o o arquivo controllers/LoginController.js e testar nossa aplicacao:var LoginController={ signin:function(req,res){ res.render('signin'); }, signup:function(req,res){ res.render('signup'); }, }; module.exports=LoginController; Agora, se rodarmos nossa aplicacao e acessar as urls, encontraremos as seguintes telas:http://localhost:3000/signuphttp://localhost:3000/signinPassportAgora sim! Estamos prontos para finalmente utilizar o passport! E necessario porem conhecermos um pouco do processo de autenticacao antes de nos aventurarmos de vez. Quando nos logamos em um site, o sistema precisa primeiro verificar se o usuario esta cadastrado na base de dados e se suas credenciais sao validas, para so entao fazer o redirecionamento para a area privada (acessada somente por usuarios logados), ou para a area publica (acessada por todos). Como nossa autenticacao pode ser feita de varias formas (lembrem-se de que nossa aplicacao suporta varias formas de login), gerenciar cada um desses logins pode ser custoso, principalmente porque temos que lidar com elementos especificos de cada tipo de autenticacao como