Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Após login dá erro "Opss"

Olá, O código está de acordo com o proposto, porém quando tento efetuar o login, acontece um erro e o login não acontece

sessao-autenticacao.js:

const uuid = require('uuid/v4');
const sessao = require('express-session');
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;

const UsuarioDao = require('../app/infra/usuario-dao');
const db = require('./database');

module.exports = (app) => {

    // configuração da sessão e da autenticação.
    passport.use(new LocalStrategy(
        {
            usernameField: 'email',
            passwordField: 'senha'
        },
        (email, senha, done) => {
            const usuarioDao = new UsuarioDao(db);
            usuarioDao.buscaPorEmail(email)
                        .then(usuario => {
                            if (!usuario || senha != usuario.senha) {
                                return done(null, false, {
                                    mensagem: 'Login e senha incorretos!'
                                });
                            }

                            return done(null, usuario);
                        })
                        .catch(erro => done(erro, false));
        }
    ));

    passport.serializeUser((usuario, done)=> {
        const usuarioSessao = {
            nome: usuario.nome_completo,
            email: usuario.email
        };

        done(null, usuarioSessao);
    });


    passport.deserializeUser((usuarioSessao, done)=>{

        done(null, usuarioSessao);

    });

    app.use(sessao({
        secret: 'node alura',
        genid: function(req){
            return uuid();
        },
        resave: false,
        saveUninitialized: false
    }));


    app.use(passport.initialize());
    app.use(passport.session());
    app.use(function (req, resp, next) {
        req.passport = passport;
        next();
    });
};
base-controlador.js:

const LivroControlador= require('./livro-controlador');
const templates = require('../views/templates');

class BaseControlador {

    static rotas() {
        return {
            home: '/',
            login: '/login'

        };
    }

    home() {
        return function(req, resp) {
            resp.marko(
                templates.base.home
            );
        };
    }

    login(){
        return function(req, resp){
            resp.marko(templates.base.login);
        };
    }

    efetuaLogin() {

        return function(req, resp, next) {

            // Lógica de login.
            const passport = req.passport;
            passport.authenticate('local', (erro, usuario, info) => {
                if (info) {
                    return resp.marko(templates.base.login);
                }

                if (erro) {
                    return next(erro);
                }

                req.login(usuario, (erro) => {
                    if (erro) {
                        return next(erro);
                    }

                    return resp.redirect(LivroControlador.rotas().lista);
                });
            })(req, resp, next);
        };
    }
}

module.exports = BaseControlador;
5 respostas

Baixei o arquivo do curso e atualizei os arquivos do projeto, mesmo assim o login não é efetuado :(

Boa tarde, Pollyanna! Como vai?

Quando vc tenta efetuar o login e o tal erro ocorre, alguma mensagem de log é mostrada no terminal do servidor ou no console do navegador? Se sim, vc poderia colar o log completo aqui para eu dar uma olhada e tentar te ajudar?

Olá! Então, nem no console nem no prompt aparece erro algum. Apenas ao clicar em login vai para a pag Opss, tente mais tarde. Tentando descobrir o porque, revisei todo o cod não encontrei nada também. Recomecei o projeto, instalei todas as extensões (talvez não seja o nome correto) e testei com o download do fim do curso. Ao executar estes arquivos, após começar do zero o projeto, deu tudo certo. Vou conferir agora o meu código com o do arquivo final para ver se eu encontro algo no meu código. De toda maneira, obrigada!

Pollyanna, veja que nessa aula eu também obtive um erro ao vivo quando tentei efetuar o login. E, logo em seguida na mesma aula, eu mostro qual foi o erro que eu cometi no código. Dê uma olhada nessa aula pois pede ser a mesma coisa!

Além disso, se vc quiser, pode colocar o projeto que está com problema no github e mandar o link aqui. Assim eu poderei te ajudar na procura do problema! O que vc acha?

Qualquer coisa é só falar, minha aluna!

solução!

A página que redireciona é exatamente a mesma da aula, mas a chamado do DAO estava nomeada correta. :( Acabei de substituir os arquivos do meu original pelos do final para tirar a teima se era algo dos pacotes, pois ao conferir o cod não vi nada de diferente, pena que não vi tua resposta antes! De toda maneira, obrigada pela ajuda e atenção, professor!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software