use*_*805 20 session connect node.js express
我正在使用Express和连接中间件的全功能用户注册/认证系统.
app.use(express.session({store: require('connect').session.MemoryStore( {reapInterval: 60000 * 10} ) }))
Run Code Online (Sandbox Code Playgroud)
唯一的问题是每次执行服务器重启时会话都会丢失.
https://github.com/remy/nodemon - 每次检测到文件更改时,nodemon都会重新启动node.js.
我怎么能有持久的会话?
Alf*_*red 24
就像你的代码告诉你正在使用MemoryStore.这是易失性的,并在重启时被清除.我建议你使用connect_redis来保持你的会话.Redis是一家非常快的商店.
make./redis-servernpm install connect-redis
var connect = require('connect') , RedisStore = require('connect-redis');
connect.createServer(
connect.cookieParser(),
// 5 minutes
connect.session({ store: new RedisStore })
);
Run Code Online (Sandbox Code Playgroud)这只是为了让您快速入门.如果你想从redis中获得最大的收益,你应该阅读文档并配置redis.
ezm*_*use 14
我试图使用express.js让Redis走上正轨,谷歌把我送到了这里.明确的实施改变了:
var express = require('express'),
RedisStore = require('connect-redis')(express);
Run Code Online (Sandbox Code Playgroud)
另一个重要的事情是快速配置的顺序.
app.configure(function(){
app.enable('strict routing'); // removes trailing slash
app.set('views', __dirname + '/views');
app.set('view engine', 'jqtpl');
app.register('.html', require('jqtpl').express);
app.use(express.favicon());
app.use(express.methodOverride());
app.use(express.compiler({src: __dirname + '/public', enable: ['sass']}));
app.use(express.static(__dirname + '/public'));
app.use(app.router);
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({secret: _.config.secret, store: new RedisStore}));
});
Run Code Online (Sandbox Code Playgroud)
cookieParser&session配置需要在配置的末尾,并且cookieParser必须放在之前express.session.
希望有所帮助,我遇到了这两个问题.
我同意所有关于redis的人,但我认为不同的技术在软件维护方面是个问题.如果你使用的是mongodb,那就是connect-mongo(https://npmjs.org/package/connect-mongo),如果你使用的是mysql,那就是connect-mysql(https://npmjs.org/package/connect -mysql),connect-couchdb for couchdb(https://npmjs.org/package/connect-couchdb)等.
小智 5
此外,如果你使用快递,你需要在告诉应用程序使用redis中间件时提供一个秘密.
所以,按照上面的阿尔弗雷德的配方,但做以下......
var express = require( 'express' );
var RedisStore = require('connect-redis');
app.use( express.cookieParser() );
app.use( express.session( { secret: "keyboard cat", store: new RedisStore }));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10163 次 |
| 最近记录: |