node.js - Node.js mongoose User.register 使页面保持挂起
问题描述
这是我的 app.js
var express = require("express")
var User = require("./models/user");
var bodyParser = require("body-parser");
var mongoose = require("mongoose");
var passport = require("passport");
var passportStrategy = require("passport-local");
var passportLocalMongoose = require("passport-local-mongoose");
//mongo db
mongoose.connect("mongodb://localhost/auth_demo_app");
var app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true }));
app.use(require("express-session")({
secret: "Rusty",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
//ROUTS
app.get("/", function(req,res) {
res.render("home");
});
app.get("/secret", function(req,res) {
res.render("secret");
});
//Auth Routhes
//show the form
app.get("/register", function(req,res) {
res.render("register");
});
app.post("/register", function(req,res) {
req.body.username
req.body.password
User.register(new User({username: req.body.username}), req.body.password, function(err, user) {
if(err) {
console.log(err);
return res.render('register');
}
passport.authenticate("local")(req, res, function(){
res.redirect("/secret");
});
});
});
//this is the locall host
app.listen(3002, function(){
console.log("Server on port 3002")
});
这是用户模型 user.js
var mongoose = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose");
var UserSchema = new mongoose.Schema({
username: String,
password: String
});
UserSchema.plugin(passportLocalMongoose)
module.exports = mongoose.model("User", UserSchema);
有人可以帮我找出为什么我的页面一直处于待处理状态的问题,因为我没有发现代码有任何问题,只是User.register的行有 问题。看起来它不能进入这个方法,但我仍然不确定为什么如果你发现错误会很好。
因为每次我查看stackoverflow时,我都会看到人们忘记像我一样放置用户模型。但这种情况并非如此
解决方案
您需要添加此行:
passport.use(User.createStrategy());
在上面添加:
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
这样做,您的代码将是:
var express = require("express")
var User = require("./models/user");
var bodyParser = require("body-parser");
var mongoose `enter code here`= require("mongoose");
var passport = require("passport");
var passportStrategy = require("passport-local");
var passportLocalMongoose = require("passport-local-mongoose");
//mongo db
mongoose.connect("mongodb://localhost/auth_demo_app");
var app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true }));
app.use(require("express-session")({
secret: "Rusty",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(User.createStrategy);
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
推荐阅读
- firebase - Flutter Firebase fetch.then 不适用于 initState
- python - 如何根据 Dateframe 的 Datetime 索引对 Dataframe 重新采样,并在时间比率上对每个值进行平均加权,直到下一个值?
- python - 如何绕过 Selenium 中的 Cloudflare bot 保护
- javascript - Discord.js ReferenceError:通道未定义
- firebase - Google API 的 Google OAuth 2.0 范围与 Google Cloud 上 IAM 中的角色和权限有何不同?
- python - 有没有办法比较位于 json 中的两个列表的元素?
- python - 如何在python中查询和排序嵌套的mongodb信息?
- javascript - 模块集成问题 discord.js bot
- javascript - 安装 @discordjs/opus 模块以播放 mp3 音频时出现 Discord.js 错误
- pandas - 熊猫:为什么用查询()而不是括号运算符?