node.js - 在子域上与 redis 和 passport 共享 session ?

标签 node.js session redis passport.js

我正在使用 npm 子域,在我的应用程序中我有伪造子域的路由

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

所以我在子域上有一个登录页面,在非子域页面上有一个登录页面。他们不共享 session ,所以我必须登录两次。我想设置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

关于node.js - 在子域上与 redis 和 passport 共享 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28667509/

相关文章:

php - 从一页检索变量以在 PHP 中显示在第二页上

asp.net - span innertext 甚至不在同一页面中分配

redis - 如何正确计算 hash-max-ziplist-value?

javascript - 如何在node js中使用mongoose加速查询mongodb

javascript - node.js 和 socket.io。 websocket 的传输类型配置?

google-app-engine - 对 API 调用 datastore_v3.Put() 的请求太大。使用 Objectify (DataStore) 而不是上传文件

redis:从另一台计算机获取键值

node.js - NodeJS 和 Redis 空响应

node.js - 无法在 Node 中请求本地模块

node.js - 使用 Node.js 和 Apache 进行长轮询