我正在开发一个node.js应用程序,我使用nodemon来运行它.我的问题是当我在服务器上进行更改并且nodemon重新启动时,我如何保持会话打开.
这个答案假定您使用的是Express或Koa这两个比较流行的node.js Web框架.
在您的应用程序中,您可能有一行说明如下.
快递4
var app = require( 'express' )()
var session = require( 'express-session' )
app.use( session() ) // this is the session middleware
Run Code Online (Sandbox Code Playgroud)
KoaJS
var app = require( 'koa' )()
var session = require( 'koa-session' )
app.use( session() ) // this is the session middleware
Run Code Online (Sandbox Code Playgroud)
Web应用程序的指导思想是使其面向世界的一面尽可能无国籍.这意味着您的node.js服务器不会在请求之间保留任何信息,并且可以随时销毁和重新启动.
会话是非常有状态的事情.因此,您需要将会话数据存储在旨在长期保持数据不被破坏的内容中.这通常通过数据库(更安全)或浏览器cookie(安全性较低)来完成.
该快递会话模块保持在默认的内存会话信息.这违反了无状态理念,并且会在重启时丢失会话信息.
该KOA会话模块默认使用的cookies.这是无状态的,但引起了一些安全问题,因为用户可能有可能修改自己的会话变量,因此不要将其用于计费或其他敏感操作.
在上述两个模块中,您可以使用自己的会话存储覆盖默认值.
表达
这可以通过connect-redis等模块轻松连接到express .
引用自述文件:
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
app.use(session({
store: new RedisStore(options),
secret: 'keyboard cat'
}));
Run Code Online (Sandbox Code Playgroud)
KoaJS
使用red来存储会话数据也可以在koa中使用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';
});
Run Code Online (Sandbox Code Playgroud)
表达
Express可以使用cookie会话扩展将会话数据存储在cookie中.
兴亚
如前所述,koa-session模块默认在cookie中存储会话.
| 归档时间: |
|
| 查看次数: |
1711 次 |
| 最近记录: |