gpt4 book ai didi

node.js - 在 node.js 服务器重启之间保留 session

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:40 25 4
gpt4 key购买 nike

我正在开发一个 node.js 应用程序,我使用 nodemon 来运行它。我的问题是,当我在服务器中进行更改并重新启动 nodemon 时,如何保持 session 打开。

最佳答案

此答案假定您使用的是 Express 或 Koa,这是两种更流行的 node.js 网络框架

在您的应用程序中,您可能有一行内容如下。

Express 4

var app = require( 'express' )()
var session = require( 'express-session' )
app.use( session() ) // this is the session middleware

KoaJS

var app = require( 'koa' )()
var session = require( 'koa-session' )
app.use( session() ) // this is the session middleware

Web 应用程序的指导思想是使其面向世界的一面尽可能无状态。这意味着您的 node.js 服务器在请求之间不保存任何信息,并且可以随时销毁和重新启动。

session 是一个非常有状态的东西。因此,您需要将 session 数据存储在旨在长期保持数据不损坏的地方。这通常是通过数据库(更安全)或浏览器 cookie(不太安全)来完成的。

express-session模块默认在内存中保存 session 信息。这违反了无状态的理想,并且会在重启时丢失 session 信息。

koa-session模块默认使用 cookie。这是无状态的,但会引发一些安全问题,因为用户可能会修改自己的 session 变量,因此不要将其用于计费或其他敏感操作。

在上述两个模块中,您都可以使用自己的 session 存储覆盖默认设置。

Redis session 存储

我通常将 session 数据存储在数据库中,例如 redis .

express

这可以很容易地用 connect-redis 这样的模块连接到 express 中.

引自自述文件:

var session = require('express-session');
var RedisStore = require('connect-redis')(session);

app.use(session({
store: new RedisStore(options),
secret: 'keyboard cat'
}));

KoaJS

在 koa 中使用 redis 存储 session 数据也是可能的 koa-redis模块。自述文件中的解释:

var app require('koa')();
var session = require('koa-generic-session');
var redisStore = require('koa-redis');

app.keys = ['keys', 'keykeys'];

app.use(session({
store: redisStore()
}));

app.use(function *() {
this.session.name = 'koa-redis';
});

无数据库 session 存储

express

Express 可以使用 cookie-session 将 session 数据存储在 cookie 中扩展名。

考阿

如前所述,koa-session模块默认将 session 存储在 cookie 中。

关于node.js - 在 node.js 服务器重启之间保留 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29947749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com