Как исправить код Passport.js, чтобы он мог правильно выходить из системы и входить в систему для пользователей? - PullRequest
0 голосов
/ 02 июля 2019

У меня проблемы с регистрацией пользователей на моем сайте.Я использую Passport.js, passport-local-mongoose и express-session для этого сайта, и после небольшого тестирования выясняется, что мои пользователи не входят в систему. Мне нужно, чтобы мои пользователи вошли в систему, так как сайт использует куки-файлы.

В моем GET-запросе "/ logout" я добавил функцию, позволяющую проверить, вошел ли пользователь в систему или нет.Всякий раз, когда я вхожу в систему и пытаюсь запустить код, я вижу файл cookie, но меня не перенаправляют до тех пор, пока не истечет время ожидания.Если бы я вошел в систему, меня бы перенаправили.Я должен убедиться, что пользователь вошел в систему первым, чтобы я мог выйти из него.

var path = require("path");
var express = require("express");
var mongoose = require("mongoose");
var bodyParser = require("body-parser");
var app = express();

mongoose.connect("mongodb://localhost/VerfundenV1", {useNewUrlParser: true, useFindAndModify: false});
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({extended: true}));

var modelsPath = path.join(__dirname, "../utils/mongoose/");
var functionPath = path.join(__dirname, "../utils/customFunctions/");
var User = require(modelsPath + "UserModel.js");

var passport = require("passport");
var LocalStrategy = require("passport-local");
app.use(require("express-session")({
    secret: "nothingtoseehere",
    resave: false,
    saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());

passport.use(new LocalStrategy({usernameField: 'email'}, User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.get("/", function(req, res){
    res.send("HEY");
})

app.get("/dashboard", function(req, res){
    res.send("DASHBOARD");
})


//user auth and all that stuff
app.get("/register", function(req, res){
    res.render("register")
})

app.post("/register", function(req, res){
    User.register(new User({
        firstName: req.body.firstName,
        lastName: req.body.lastName,
        region: req.body.region,
        email: req.body.email,
        phone: req.body.phone
    }), req.body.password, function(err, user){
        if(err){
            console.log(err);
            res.render("register");
        }else{
        passport.authenticate("local")(req, res, function(){
            res.redirect("/")
        })
    }
    })
});

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

app.post("/login", passport.authenticate("local", 
    {
        successRedirect: "/",
        failureRedirect: "/login"
    }), function(req, res){
})

app.get("/logout", function(req, res){
    if (req.isAuthenticated()) {
        return res.redirect('/') // Handle valid logout
    }
})

app.listen(3000, function(){
    console.log("SERVER SIX, GOING DARK")
})

Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...