护照-socketio商店属性configuration

我想知道如何configurationpassport.socketio

我阅读文档,但仍然可以包装我的头如何设置store属性。

我正在使用passport-local

这是我的代码(相关部分):

一些configuration:

 app.use( express.cookieParser() ); app.use(express.methodOverride()); // use express.session before passport, so that passport session will work app.use(express.session({ secret: 'somerandomcod3' })); // Initialize Passport! Also use passport.session() middleware, to support // persistent login sessions (recommended). app.use(passport.initialize()); app.use(passport.session()); 

passport.socketioconfiguration

  io.set("authorization", passportSocketIo.authorize({ cookieParser: express.cookieParser, key: 'express.sid', secret: 'somerandomcod3', store: express.session, // not working tried also a couple others fail: function(data, accept) { accept(null, false); }, success: function(data, accept) { accept(null, true); } })); 

我的本地战略

 var LocalStrategy = require('passport-local').Strategy ; passport.use(new LocalStrategy(function(username, password, done) { db.userModel.findOne({ username: username }, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Unknown user ' + username }); } user.comparePassword(password, function(err, isMatch) { if (err) { return done(err); } if(isMatch) { return done(null, user); } else { return done(null, false, { message: 'Invalid password' }); } }); }); })); 

所以问题是什么或更好,但我怎么能得到会议商店。 ?!

商店可以是几个值。 默认情况下,商店是MemoryStore,或者express.session.MemoryStore如果你想要的确切参考。

MemoryStore非常适合不依赖于会话,但是它们的缺点是如果您的节点进程重新启动,则会丢失所有会话。 基本上这对于任何生产版本都是很糟糕的,所以如果这是一个严肃的应用程序,你应该看看这个问题关于不同的会议商店 。

我相信你的代码应该是这样的相关部分是:

 var express = require("express") , app = express() , sessionStore = new express.session.MemoryStore(); //or some other kind of store app.use(express.session({ secret: 'somerandomcod3', store: sessionStore})); io.set("authorization", passportSocketIo.authorize({ cookieParser: express.cookieParser , key: 'express.sid' , secret: 'somerandomcod3' , store: sessionStore , fail: function(data, accept) { accept(null, false); } , success: function(data, accept) { accept(null, true); } })); 

希望现在你有一个更好的理解:)