2015-02-23 126 views
0

我使用NPM子域,我的應用程序裏面我有一個假的一個子與子網域上的redis和護照共享會話?

// looks like app.localhost:3000 
router.get('/subdomain/app', app.dashboard); 

所以我有一個非子域名頁面上的子域名和登錄頁面的登錄頁面的路線。他們不會分享會話,所以我必須登錄兩次。我想設置redis,但我不知道如何。

// here is my session middleware, I tried using .localhost 
app.use(session({ secret: 'something', domain: '.localhost', })); 

,但我看到那裏的人都使用Redis的像

app.use(express.session({ 
    store:new RedisStore({ 
     host: config.redis.session.host, 
     port: config.redis.session.port, 
     db: config.redis.session.db 
    }), 
    secret: config.session_secret 
})); 

這似乎是它可以解決我的問題,我不知道如何設置一個redisStore以及其中配置數據從何而來?

有人可以向我解釋如何使用redis,以便當用戶登錄app.example.io或example.io時,他/她已登錄好,不需要登錄兩次?

回答

1

您需要以下模塊。

connect-redis 
express-session 
cookie-parser 

然後使用下面的示例代碼:

var express = require('express'); 
var cookieParser = require('cookie-parser'); 
var session = require('express-session'); 
var RedisStore = require('connect-redis')(session); 

var app = express(); 
app.use(cookieParser()); 
app.use(session({ 
    secret: "thisismysecretkey", 
    store: new RedisStore({ host: 'localhost', port: 6379}) 
})); 

app.get('/', function (req, res) { 
    res.send('Hello World!') 
}) 

var server = app.listen(3000, function() { 
    var host = server.address().address 
    var port = server.address().port 
    console.log('Example app listening at http://%s:%s', host, port) 
}) 

來源:How to save and retrieve session from Redis

+0

哇感謝,這是有幫助的,我很感激。讓我執行它,然後我會檢查這個! – 2015-02-23 17:11:36

+0

當我嘗試登錄時不會執行護照,它只是做一個POST並沒有任何反應? – 2015-02-23 18:16:00

+0

我現在可以登錄,但會話不共享? – 2015-02-23 19:22:16