求解:express-session 和connect-mongo 无法获取session值保持用户登录状态及二级域名cookie共享问题
先描叙一下问题:
1、本地部署的网站,端口3000 2、部署成功之后使用 http://localhost:3000/ 访问,session登录成功 3、使用nginx,然后修改host将127.0.0.1映射到一个自定义的域名之后,根据 域名访问也可以正常 。但是,登录的时候就出现问题了,获取不到session 的数据,然后无法保持登录状态了,但是一直往数据库里面写入session。
一些相关配置如下:
app.use(session({
secret: settings.cookieSecret,
store: new MongoStore({
url: settings.url
}),
resave: true,
saveUninitialized:true
}));
mongodb连接URL内容
url : 'mongodb://127.0.0.1:27017/ntweet', //mongodb数据库链接
nginx配置
upstream ntweet {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
server {
listen 80;
server_name www.ntweet.com ntweet.com;
#access_log /var/log/nginx/test.log;
location / {
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#proxy_set_header Host $http_host;
#proxy_set_header X-Nginx-Proxy true;
#proxy_set_header Connection "";
proxy_pass http://ntweet;
}
}
最后有一个关于二级域名cookie共享问题,网上看到都是这样配置,然而,这样配置并不生效,不知道是哪里出了问题
app.use(express.session({
secret: conf.secret,
cookie: { domain:'.yourdomain.com'},
store: new MongoStore(conf.sessiondb)
}));
欢迎各位大神指导
1 回复
醉了,竟然是key的问题!但是localhost为什么没有key也可以?
app.use(session({
key: settings.cookieKey,
secret: settings.cookieSecret,
cookie: { domain: settings.host.DOMAIN},
store: new MongoStore({
url: settings.url
}),
resave: true,
saveUninitialized: true
}));