我正在使用 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)
})
关于node.js - 在子域上与 redis 和 passport 共享 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28667509/