在 Node.js 服务器重新启动时保持用户会话登录
Keep user sessions logged in on Node.js server restart
我正在使用 express-session
作为我 Node.js 网络应用程序用户的登录系统。我的问题是,每次我进行更新并重新启动 Node.js 服务器时,所有用户都会注销,这不是理想的行为(有多个用户通过本地网络登录,我想不必每次重新启动时重新登录。
根据我的理解,我可以使用诸如 connect-pg-simple
之类的东西(供参考,我在我的节点网络应用程序中使用 postgres 数据库)让用户在服务器重启时保持登录状态,但我不确定如何实现这个。
我知道会是这样的:
app.use(session({
store: new (require('connect-pg-simple')(session))({
// Insert connect-pg-simple options here
}),
secret: 'secret',
resave: false,
saveUninitialized: true
}));
但我不知道使用什么选项或如何在服务器重新启动时保存用户会话。
您的会话存储在应用运行时,因此在刷新时,它会在服务器重启时重置它可能在运行时保存的所有其他数据
是的,你走在正确的轨道上。
- 打开您的数据库并创建一个 table 命名会话。参见:https://github.com/voxpelli/node-connect-pg-simple/blob/HEAD/table.sql
- 像您发布的那样添加 connect-pg-simple 代码
- 从 node-pg 传递您正在使用的 postgres 池。
const session = require('express-session')
const PGSessionStore = require('connect-pg-simple')(会话)
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
}))
我正在使用 express-session
作为我 Node.js 网络应用程序用户的登录系统。我的问题是,每次我进行更新并重新启动 Node.js 服务器时,所有用户都会注销,这不是理想的行为(有多个用户通过本地网络登录,我想不必每次重新启动时重新登录。
根据我的理解,我可以使用诸如 connect-pg-simple
之类的东西(供参考,我在我的节点网络应用程序中使用 postgres 数据库)让用户在服务器重启时保持登录状态,但我不确定如何实现这个。
我知道会是这样的:
app.use(session({
store: new (require('connect-pg-simple')(session))({
// Insert connect-pg-simple options here
}),
secret: 'secret',
resave: false,
saveUninitialized: true
}));
但我不知道使用什么选项或如何在服务器重新启动时保存用户会话。
您的会话存储在应用运行时,因此在刷新时,它会在服务器重启时重置它可能在运行时保存的所有其他数据
是的,你走在正确的轨道上。
- 打开您的数据库并创建一个 table 命名会话。参见:https://github.com/voxpelli/node-connect-pg-simple/blob/HEAD/table.sql
- 像您发布的那样添加 connect-pg-simple 代码
- 从 node-pg 传递您正在使用的 postgres 池。
const session = require('express-session') const PGSessionStore = require('connect-pg-simple')(会话) 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
}))