Паспортная аутентификация с node js - PullRequest
0 голосов
/ 23 апреля 2020

Привет всем Спасибо заранее. Я застрял на аутентификации с паспортом. все работает отлично, я могу отправить информацию о пользователе в мою БД. но проблема в том, что когда я регистрирую любого пользователя, страница не перенаправляет на мою страницу secreat.e js. это покажет мне Плохая ошибка запроса ... пожалуйста, проверьте ниже код:

    require('dotenv').config( );
const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
const mongoose = require("mongoose");
const session = require('express-session');
const passport = require("passport");
const passportLocalMongoose = require("passport-local-mongoose");

const LocalStrategy = require('passport-local').Strategy;


// const encrypt = require("mongoose-encryption");
// const md5 = require("md5");
//  const bcrypt = require('bcrypt');
//  const saltRounds = 10;

const app = express();
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended : true }));
app.use(express.static("public"));



app.use(session({

    secret : " Our littile secret",
    resave : false,
    saveUninitialized : false 
}));

app.use(passport.initialize());
app.use(passport.session());
//////////////// Mongo DB Connection /////////////////////////

mongoose.connect("mongodb://localhost:27017/userDB", { useNewUrlParser : true, useUnifiedTopology :true });
mongoose.set('useCreateIndex', true)
const userSchema = new mongoose.Schema({

    email : String,
    password : String
});

userSchema.plugin(passportLocalMongoose);


// userSchema.plugin(encrypt, { secret: process.env.SECRET , encryptedFields : ["password"] });

const User = mongoose.model("User", userSchema);


passport.use(new LocalStrategy(User.authenticate()));

// use static serialize and deserialize of model for passport session support
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());


//////////////////////// Route Script //////////////////////////////////////////

app.get("/", function(req, res){

    res.render("home");
});


app.get("/login", function(req, res){

    res.render("login");
});

app.get("/registration", function(req, res){

    res.render("registration");
});


app.get("/secreat", function(req, res){

   if(req.isAuthenticated()){

    res.render("secreat");

   } else {

        res.redirect("/login");
   }
});



// Passsport Authentication Script 

app.post("/register", function(req, res ){


    let newUser = new User({

        username : req.body.email
    });

    User.register(newUser, req.body.password , function(err, user){

        if(err){


             res.redirect("/register");

        }else {

            passport.authenticate("local") (req, res , function(){

                res.redirect("/secreat");
            });



        }


        // next();



    });   

    // passport.authenticate("local", { successRedirect: '/secreat', failureRedirect: '/login' })




});


app.post("/login", function(req, res){


});


///////////////////////// SERVER SCRIPT ////////////////////////////////

app.listen(3000, function(req, res){


    console.log("server is running on port 3000");
})

Я был бы очень благодарен, если кто-нибудь решит эту проблему ...

...