【发布时间】:2020-12-21 10:11:15
【问题描述】:
我是 MERN(Mongo,Express, React,Node) 的新手,我正在使用它来创建应用程序。我看到了一个关于护照的教程,并按照教程中所示的方式实现了它,但我不断收到“错误请求”在屏幕上呈现。
在我参加教练使用 express-ejs 护照的课程中,我只是推断出反应。
根据我所做的调试 - passport.authenticate() 函数永远不会被执行。散列密码和电子邮件被记录到我的 mongo 服务器,但它从未得到验证。我花了一整天的时间尝试调试,但无济于事。
下面是我输入的服务器端代码。 本地主机:5000 是我的快速服务器,本地主机:3000 是反应服务器任何帮助将不胜感激。错误代码 400 顺便说一句
* Require Dependencies
*/
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 app = express();
app.use(express.static("public"));
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/userDB", {useNewUrlParser: true, useUnifiedTopology: true});
mongoose.set("useCreateIndex", true);
const userSchema = new mongoose.Schema({
email: String,
password: String
});
userSchema.plugin(passportLocalMongoose);
const User = new mongoose.model("User", userSchema);
passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
////////////////////////////// Get Request Block //////////////////////////////
app.get("/secrets", function (req, res) {
if (req.isAuthenticated()) {
res.redirect("http://localhost:3000/secrets");
} else {
res.redirect("/register");
}
});
/////////////////////////////////////////////////////////////////////////////////
app.post("/register", function (req, res) {
User.register({ username: req.body.emailId }, req.body.password, function (err, user) {
if (err) {
console.log(err);
res.redirect("/error");
} else {
console.log("me");
passport.authenticate("local")(req, res, function () {
console.log("met1e1e");
res.redirect("/secrets");
});
// passport.authenticate('local', {
// successRedirect: '/secrets',
// failureRedirect: '/error',
// failureFlash: true
// });
}
});
});
app.get("/error", function (req, res) {
console.log("debug:wrkbj");
res.redirect("http://localhost:3000/main");
});
app.listen(5000, function () {
console.log("Server live on port 5000.");
});
【问题讨论】:
标签: node.js reactjs passport.js passport-local