проверка подлинности паспорта с node.js и express (проблемы с failRedirect) - PullRequest
1 голос
/ 25 февраля 2020

На этой неделе я начал изучать node.js, но я застрял с этим. Это просто простая страница, которую я использую, чтобы учиться. Итак, каждый раз, когда я пытаюсь войти в систему, он просто переходит в faultRedirect, но я не могу найти причину. Я не получаю никакой ошибки массаж или что-нибудь. Я уже проверил базу данных, и все в порядке

/ config / alth. js

const localStrategy = require("passport-local").Strategy;
const mongoose = require('mongoose');
const bcrypt = require("bcryptjs");

//Model
const Usuario = require("../models/Usuario");

module.exports = function(passport){

    passport.use(new localStrategy({usernameField: "email", passwordField: "senha"}, (email, senha, done) => {
        Usuario.findOne({email: email}).then((usuario)=>{
            if(!usuario){
                return done(null, false, {message: "Essa conta não existe"}); 
            }
            bcrypt.compare(senha, usuario.senha, (error, batem) => { 

                if(batem){ 
                    return done(null, user);
                }else{
                    return done(null, false, {message: "Senha incorreta"});
                }

            });

        });

    }));

    passport.serializeUser((usuario, done)=>{ 
        done(null, usuario.id);
    });

    passport.deserializeUser((id, done)=>{
        Usuario.findById(id, (error, usuario)=>{ 
            done(error, usuario);
        });
    });

}

/ route / usuario. js

const express = require("express");
const mongoose = require("mongoose");
const bcrypt = require("bcryptjs");
const router = express.Router(); 
const passport = require("passport");
var LocalStrategy = require('passport-local').Strategy;

const Usuario = require("../models/Usuario");

router.get("/registro", (req, res)=>{
    res.render("usuarios/registros");
});

router.post("/registro", (req, res)=>{
    var erros = [];
     if(!req.body.nome || typeof req.body.nome == undefined || req.body.nome == null){
         erros.push({texto: "Nome inválido."});
     }
     if(!req.body.email || typeof req.body.email == undefined || req.body.email == null){
        erros.push({texto: "Email inválido."});
    }
    if(!req.body.senha || typeof req.body.senha == undefined || req.body.senha == null){
        erros.push({texto: "Senha inválido."});
    }else if(req.body.senha.length < 6){
        erros.push({texto: "Senha muito curta! Mínimo de 6 caracteres."});
    }
    if(req.body.senha != req.body.senha2){
        erros.push({texto: "Senhas diferentes, revise seus dados."});
    }

    if(erros.length > 0){
        res.render("usuarios/registros", {erros: erros});
    }else{
        Usuario.findOne({email: req.body.email}).then((usuario)=>{ //checa se essa email existe no banco de dados
            if(usuario){
                req.flash("error_msg", "Já existe uma conta com esse email");
                res.redirect("/usuarios/registro");
            }else{
                //pegando dados do usuario
                const novoUsuario = new Usuario({
                    nome: req.body.nome,
                    email: req.body.email,
                    senha: req.body.senha
                });



                var salt = bcrypt.genSaltSync(10);
                var hash = bcrypt.hashSync(req.body.senha, salt);

                new Usuario(novoUsuario).save().then(() => {
                    req.flash('success_msg', 'Usuario cadastrado com sucesso!')
                    res.redirect('/')
                }).catch((error) => {
                    req.flash('error_msg', 'Erro ao cadastrar o usuario.')
                    console.log(error);
                    res.redirect("/usuarios/registro")
                })
            }
        }).catch((error)=>{
            req.flash("error_msg", "Houve um erro interno");
            res.redirect("/");
        });
    }
});

router.get("/login", (req, res)=>{
    res.render("usuarios/login");
});
router.post("/login", (req, res, next)=>{
    passport.authenticate("local", {
        successRedirect: "/",
        failureRedirect: "/usuarios/login",
        failureFlash: true
    })(req, res, next);
});

module.exports = router;

конфиги в приложении. js:

// Config

    // Section
        app.use(session({
            secret: "senha!forte123",
            resave: true,
            saveUninitialized: true
        }));
        app.use(passport.initialize());
        app.use(passport.session());
        app.use(flash());
...