const express = require("express");
const mongoose = require("mongoose");
const session = require("express-session");
const passport = require("passport");
var LocalStrategy = require('passport-local');
const passportLocalMongoose = require("passport-local-mongoose");
mongoose.connect("mongodb://localhost:27017/users", {
useNewUrlParser: "true",
})
mongoose.connection.on("error", err => {
console.log("err", err)
})
mongoose.connection.on("connected", (err, res) => {
console.log("mongoose is connected")
})
const app = express();
// defining the static folder
app.use(express.static("public"));
app.set('view engine','ejs');
app.use(express.urlencoded({ extended: true }));
app.use(session({
secret: 'This is my lil secret, hehe :)',
resave: false,
saveUninitialized: false,
cookie: { secure: false }
}));
const userSchema = new mongoose.Schema ({
email: String,
password: String,
});
userSchema.plugin(passportLocalMongoose);
const User = new mongoose.model("User", userSchema);
const strategy = new LocalStrategy(User.authenticate())
passport.use(strategy);
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.use(passport.initialize());
app.use(passport.session());
app.get("/", function(req, res){
res.render("home");
});
app.get('/login',function(req, res, next) {
res.render('login');
});
app.get("/register", function(req, res){
res.render("register");
});
app.get("/secrets", function(req, res){
if (req.isAuthenticated()){
res.render("secrets");
} else {
res.redirect("/login");
}
});
app.get("/logout", function(req, res){
req.logout();
res.redirect("/");
});
app.post("/register", function(req, res){
User.register({username: req.body.username}, req.body.password, function(err, user){
if (err) {
console.log(err);
res.redirect("/register");
} else {
passport.authenticate("local")(req, res, function(){
res.redirect("/secrets");
});
}
});
});
app.post("/login", function(req, res){
const user = new User({
username: req.body.username,
password: req.body.password
});
req.login(user, function(err){
if (err) {
console.log(err);
} else {
passport.authenticate("local")(req, res, function(){
res.redirect("/secrets");
});
}
});
});
app.listen(4000, function() {
console.log("Server started on port 4000.");
});
我写了上面的一段代码,使用 Node、Express、Passport.js 和 Mongoose 进行身份验证。但我收到以下错误 - “MongooseError:操作
users.findOne()
缓冲在 10000 毫秒后超时”。请帮帮我。提前致谢:)
当我尝试注册时,代码没有将我带到秘密页面,而是抛出上述错误。