На этой неделе я начал изучать 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());