在Node.js服务器重启时保持用户会话登录

nhhxz33t  于 2023-05-28  发布在  Node.js
关注(0)|答案(2)|浏览(193)

我使用express-session作为Node.js Web应用程序的用户登录系统。我的问题是,每次我更新并重新启动Node.js服务器时,所有用户都会注销,这不是理想的行为(有多个用户通过本地网络登录,我希望每次重新启动时都不必重新登录)。
据我所知,我可以使用诸如connect-pg-simple之类的东西(作为参考,我在node web应用程序中使用postgres数据库)来保持用户在服务器重启时登录,但我不确定如何实现这一点。
我知道会是这样的:

app.use(session({
    store: new (require('connect-pg-simple')(session))({
        // Insert connect-pg-simple options here
    }),
    secret: 'secret',
    resave: false,
    saveUninitialized: true
}));

但我不知道使用什么选项或如何保存用户会话,即使在服务器重新启动。

zpgglvta

zpgglvta1#

是的,你在正确的轨道上。
1.打开数据库并创建一个名为session的表。参见:https://github.com/voxpelli/node-connect-pg-simple/blob/HEAD/table.sql
1.像您发布的那样添加connect-pg-simple代码
1.从node-pg传递你正在使用的postgres池。
const session = require('express-session')const PGSessionStore = require('connect-pg-simple')(session)const pg = require('pg ')

const pool = new pg.Pool({
  user: process.env.PG_USERNAME,
  host: process.env.PG_HOST,
  database: process.env.PG_DATABASE,
  password: process.env.PG_PASSWORD,
  port: process.env.PG_PORT
})

app.use(session({
    store: new PGSessionStore({
      pool: pool,
      tableName: 'session'
    }),
    secret: process.env.COOKIE_SECRET,
    cookie: {
      secure: false,
      httpOnly: true,
      sameSite: true,
      maxAge: 24 * 60 * 60 * 1000
    },
    saveUninitialized: true,
    resave: false
}))
zvms9eto

zvms9eto2#

您的会话存储在应用程序运行时,因此在刷新时,它会在服务器重新启动时重置它可能在运行时保存的所有其他数据

相关问题