2013-06-30 67 views
0

我從memorystore切換到使用Redis,我也在本地使用MongoDB。req.session undefined用Redis/Express

我已閱讀的類似帖子不相關或有幫助。 基本上,如果路由器函數嘗試將值設置爲req.session,那麼節點應用程序將關閉。

我是Redis的新手,所以也許這是顯而易見的東西,我不明白?

// in app 
var app = express(); 
var cookieParser = express.cookieParser('secret'); 
app.configure(function() { 
    app.use(express.bodyParser()); 
    app.use(cookieParser); 
    app.use(express.session({secret: 'secret', store: othermodule.getSessionStore()})); 

// othermodule 
var RedisStore = require('connect-redis')(express); 
var sessionStore = new RedisStore({ 
    host: 'localhost', 
    port: 6379, 
    db: 2, 
    pass: 'RedisPASS'}); 

感謝

+0

嘗試刪除通行證,並檢查您的redis主機/端口是否正確 – user568109

+0

我是否還需要來自redis.createclient的客戶端?我正在閱讀connect-redis的文檔,主機應該是localhost的機器,我認爲 – Richard

+0

我曾經給客戶端選項,從來沒有嘗試過沒有它。給客戶端提供相同的選項。 – user568109

回答

2

嘗試刪除你的選項,你傳遞給RedisStore密碼。

如果你想要,你可以要求客戶端在連接時提供密碼。但默認情況下,客戶端無需密碼即可進行連接。如果不需要密碼並且您輸入密碼,則客戶端將嘗試使用給定的密碼進行驗證,這將導致連接失敗。客戶端不允許使用無密碼回退。因爲你沒有定義會話。

請參閱herehere配置密碼。

+0

感謝您的解釋 – Richard