即使在重新加载主文件 (index.js) 后,如何让用户保持登录状态?

How to keep user logged in even after reloading the main file (index.js)?

我有一个 Express 应用程序,它使用 express-sessionpassport 来保持会话的进行。

这些技术使用户保持登录状态,直到他们点击注销按钮。

但是,有一个异常会导致用户注销。

我使用 PM2 重新加载我的 index.js 文件。命令如下。

pm2 reload all

当我执行上述命令时,index.js 文件被重新加载并且一切正常。

但是,我意识到每次使用此命令重新加载 index.js 文件时,登录用户都会注销,这是不应该发生的。

任何人都可以告诉我如何在我重新加载 index.js 文件后让用户保持登录状态吗?

index.js 文件中的部分代码:

var express = require("express");
var app = express();
var cookieParser = require("cookie-parser");
var bodyParser = require("body-parser");
var session = require("express-session");

passport.serializeUser(function(user, done) {
  done(null, user.email);
});

passport.deserializeUser(function(username, done) {
  findByUsernameDb(username, function(err, user) {
    if (err) {
      return done(err);
    }
    done(err, user);
  });
});

passport.use("login", new LocalStrategy({
    usernameField: "email",
    passwordField: "password"
  },
  function(username, password, cb) {
    findByUsernameDb(username, function(err, user) {
      if (err) {
        return cb(err);
      }
      if (!user) {
        return cb(null, false, { message: "Incorrect email." });
      }
      bcrypt.compare(password, user.password, function(err, res) {
        if (res) {
          return cb(null, user);
        } else {
          return cb(null, false, { message: "Incorrect password." });
        }
      });
    });
  }
));



app.use(cookieParser('hello'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(session({ 
  secret: 'world',
  resave: true,
  saveUninitialized: true
}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());

使用一种持久会话存储引擎。这是一个列表 https://github.com/expressjs/session#compatible-session-stores