问题描述
我正在创建MEAN Stack食品目录应用程序。当我检查req.isAuthenticated()时,Node.js为我提供了登录路径中的用户。但是,当我稍后尝试检查是否仍在登录时,它会将req.user定义为未定义。
我如何使用户坚持下去?我知道我可以使用本地存储,但是有更好的方法吗?
var express = require('express');
var cors = require('cors');
var bodyParser = require('body-parser');
var passport = require('passport');
var mongoose = require('mongoose');
var LocalStrategy = require('passport-local');
var passportLocalMongoose = require('passport-local-mongoose');
app = express();
app.use(require('express-session')({secret:"timelord",resave:false,saveUninitialized:false}));
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(passport.initialize());
app.use(passport.session());
mongoose.set('useNewUrlParser',true);
mongoose.set('useUnifiedTopology',true);
mongoose.connect('mongodb://127.0.0.1:27017/delectabledb');
var UserSchema = new mongoose.Schema({name: String,gender: String,dob: String,country:String,phone: String,email: String,password: String,username: String,prof: String});
UserSchema.plugin(passportLocalMongoose);
var User = mongoose.model("User",UserSchema);
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
app.post('/loginUser',function(req,res,next) {
passport.authenticate('local',function(err,user,info) {
console.log(req.user) //returns false
if (err) { return next(err); }
if (!user) { res.send({code:"500"}); }
req.logIn(user,function(err) {
console.log(req.user) //returns true
if (err) { return next(err); }
res.send({code:"200",user:user});
});
})(req,next);
});
app.listen(3000,()=>{
console.log("Running server on port 3000...");
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)