求解:express-session 和connect-mongo 无法获取session值保持用户登录状态及二级域名cookie共享问题
发布于 8 年前 作者 mrtanweijie 3473 次浏览 来自 问答

先描叙一下问题:

1、本地部署的网站,端口3000 2、部署成功之后使用 http://localhost:3000/ 访问,session登录成功 3、使用nginx,然后修改host将127.0.0.1映射到一个自定义的域名之后,根据 域名访问也可以正常 。但是,登录的时候就出现问题了,获取不到session 的数据,然后无法保持登录状态了,但是一直往数据库里面写入session。

QQ20161014-0.png

一些相关配置如下:

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
}));
回到顶部