护照检索错误请求

时间:2019-08-03 17:26:43

标签: javascript node.js express passport.js ejs

我在Node.js中使用Express护照,总是,当我在注册页面中提交我的凭据时,它会保存到数据库中,但是在这种情况下,当我路由到另一个ejs的productos2页面时(您将在下面的代码)也向我发送了错误请求,当我尝试登录时也会向我发送错误请求。

所以我很难确定它可能是bodyParser.urlencoded({extended:false}),所以我将其更改为extended:true,更新了bodyParser包并检查文件中的拼写错误

SERVER.JS:

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

const app = express();

app.use(express.static("public"));
app.use('/static', express.static(path.join(__dirname, 'public')));
app.set('view engine', 'ejs');

app.use(bodyParser.urlencoded({extended: true}));

app.use(session({
    secret: "Our little secret.",
    resave: false,
    saveUninitialized: false
}));

app.use(passport.initialize());
app.use(passport.session());

mongoose.connect("mongodb://localhost:27017/productosDB", {
    useNewUrlParser: true
});

mongoose.set("useCreateIndex", true);

const credentialsSchema = new mongoose.Schema ({
    user: String,
    password: String
});

credentialsSchema.plugin(passportLocalMongoose);

const Credential = new mongoose.model("Credential", credentialsSchema);

passport.use(Credential.createStrategy());

passport.serializeUser(function(user, done) {
  done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  Credential.findById(id, function(err, user) {
    done(err, user);
  });
});

app.get("/productos2", function(req, res) {
    if (req.isAuthenticated()) {
       res.render("productos2");
    } else {
       res.redirect("/signin");
    }
}); 

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

Credential.register({username: req.body.email},
         req.body.password, function(err, user){
         if(err) {
             console.log(err);
             res.redirect("/registrate");
         } else {
             passport.authenticate("local")(req, res, function() {
                 res.redirect("/productos2");
             });
         }
     }); 
 });

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

     const user = new Credential ({
     user : req.body.email,
     password : req.body.password
    });


req.login(user, function(err) {
         if (err) {
            console.log(err);
        } else {
            passport.authenticate("local")(req, res, function() {
             res.redirect("/productos2");
        });
    }
});

所以我要在这里实现的是,当您成功登录或注册时,它会将您路由到productos2页面

0 个答案:

没有答案
相关问题