我正在嘗試在使用Redis Express會話的應用程序中使用passport-twitter和passport-facebook進行身份驗證。如果我刪除的Connect-redis的在快遞存儲會話,一切工作正常,但Redis的會議上,我得到以下錯誤:與connect-redis一起使用護照和OAuth
Error: OAuth authentication requires session support
| at Strategy.OAuthStrategy.authenticate
我的代碼如下:
app.configure(function(){
app.set('port', process.env.PORT || port);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser("supersecret"));
app.use('/html', express.static('html'));
app.use('/assets', express.static('assets'));
});
if (process.env.REDISCLOUD_URL) {
var rtg = require("url").parse(process.env.REDISCLOUD_URL),
redis = require('redis'),
connectRedisStore = require('connect-redis')(express),
authToken = rtg.auth.split(":")[1];
app.configure(function(){
app.use(
express.session(
{
secret: 'supersecret',
cookie: { maxAge: 60000 },
store: new connectRedisStore({
host: rtg.hostname,
port: rtg.port,
db: authToken[0],
pass: authToken[1]
})
}
)
);
app.use(passport.initialize());
app.use(passport.session(
{
secret: 'supersecret',
store: new connectRedisStore({
host: rtg.hostname,
port: rtg.port,
db: authToken[0],
pass: authToken[1]
})
}
));
});
}
是它可以一起使用這些嗎?
編輯: 在進一步調試,似乎使用連接,Redis的快車的會話存儲不設置req.session任何東西。這是導致問題的原因。不幸的是,我似乎無法讓它工作。其他具有相同問題的人通過將cookieParser行放在會話行上方來修復它,但這正是它始終存在於我的行列的地方,所以問題是另一回事。我很茫然。
我應該注意到我的LocalStrategy在Redis商店中正常工作; Google認證也是如此。只有推特和臉書不起作用。 – electrichead 2013-05-13 14:33:52