与子网域上的redis和护照共享会话?

问题描述:

我使用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时,他/她已登录好,不需要登录两次?

您需要以下模块。

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