【问题标题】:Express-session creates new session every requestExpress-session 为每个请求创建新会话
【发布时间】:2021-06-15 20:32:51
【问题描述】:

我将我的 node express 服务器投入生产。在开发中,express-session 运行良好(它使用 MemoryStore 将会话存储到 cookie 中)。但现在它会在我每次刷新或发出请求时在 MongoStore 中创建一个新的会话 ID。此外,它不再在浏览器中创建 cookie(idk 是好是坏)

关于这个主题的大多数 StackOverflow 查询告诉我做我已经做过的事情,所以没有帮助

这是我的快速和会话设置:

const app = express()

const apiPort = process.env.PORT || process.env.API_PORT
app.use(cors({credentials: true, origin: process.env.ORIGIN_URL}))

mongoose.connection.on('error', (err) => {
    console.error(err);
    console.log('MongoDB connection error. Please make sure MongoDB is running.');
    process.exit();
});

const sessionMiddleware = session({
    resave: false,
    saveUninitialized: false,
    secret: process.env.SECRET,
    // secure: true,
    cookie: {
        sameSite: true,
        httpOnly: true,
        secure: true,
        maxAge: 1000 * 60 * 60 * 24 * 30
    },
    store: MongoStore.create({
        mongoUrl: process.env.MONGODB_URI
    })
})

app.use(sessionMiddleware);
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static("public"));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json())

app.post('/auth/login', (req, res, next) => {
    passport.authenticate('local', (err, user, info) => {
      if (err) { return next(err); }
      if (info) {
          return res.status(401).json({error: info.msg})
      }
      req.logIn(user, function(err) {
        if (err) { return next(err); }
        return res.status(200).send(user);
      });
    })(req, res, next);
});

app.get('/auth/logout', (req, res) => {
    req.logout()
    res.sendStatus(200)
});

app.get('/checkToken', authCheck, (req, res) => {
    res.status(200).send({accountType: res.accountType});
})

可能有助于解决此问题的其他信息:前端位于单独的域中,上述服务器位于 Heroku 上,数据库位于 MongoDB 云中。

【问题讨论】:

    标签: node.js express session express-session


    【解决方案1】:

    原来我缺少的只是设置中的app.set('trust proxy', 1) 和会话中间件中的cookie: {} 中的sameSite: 'none'

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 2022-01-24
      • 1970-01-01
      • 2016-08-07
      • 2011-05-15
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多