3
迄今爲止,我一直在爲我的Express會話使用默認的MemoryStore。除了所有會話數據在重新啓動之間丟失以外,一切都工作得很好。所以我試圖讓我的會話與Redis & Connect-Redis一起工作。快遞+護照+ Redis會話?
下面是涉及會話配置與Redis的我的代碼的一部分:
var express = require("express"),
app = module.exports = express(),
passport = require("./passport"),
http = require("http"),
RedisStore = require("connect-redis")(express),
redis = require("redis").createClient();
app.configure(function(){
app.set("passport", passport);
app.use(express.cookieParser());
app.use(express.session({
secret: "I can haz working sessions?",
store: new RedisStore({ client: redis })
}));
app.use(passport.initialize());
app.use(passport.session());
...
當我運行該應用程序,沒有任何錯誤。但是,當我嘗試登錄時,雖然它執行初始登錄,但我只是不斷彈回到登錄屏幕。就好像護照不能設置cookie,或者在設置cookie後不能讀取cookie。
僅供參考,這裏有我的護照使用序列化的功能/反序列化會話:
passport.serializeUser(function(user, done) {
done(null, {
id : user.id,
type : user.type,
firstname: user.firstname,
lastname: user.lastname
});
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
在哪裏我錯了有什麼建議?是否需要修改護照serializeUser/deserializeUser才能使用redis?還是我錯過了別的?
(提前)感謝您的幫助。
檢查您的瀏覽器的開發工具以查看cookie是否實際設置(並且還通過瀏覽器發送回服務器)。你的代碼看起來沒問題。 – robertklep 2013-03-22 06:30:14
聽起來像我與cookie會話相同的問題:http://stackoverflow.com/questions/19011531/using-cookiesession-with-passport – 2013-09-26 07:36:02
@ user1031947:你能解決你的問題?請更新。 – moaglee 2015-03-16 14:15:05