我们能记住在passport.js路线之外的用户吗?

问题描述

我正在创建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 (将#修改为@)