簡體   English   中英

Nginx + Node.js + express.js + passport.js:Subdommain保持身份驗證

[英]Nginx + Node.js + express.js + passport.js: Subdommain stay authenticated

我有一個具有以下配置的Nginx服務器
和一個node.js服務器。

server.js

app         = express(),
    cookieSession     = require('cookie-session'),
app.use(cookieSession({
    secret: config.session_secret,
    resave: true,
    saveUninitialized: true,
    store: new Redis({
        port: config.redis_port
    }),
    cookie: { max_age: 43200000, domain:"localhost"}
}));

nginx.conf

worker_processes  1;

    events {
        worker_connections  1024;
    }


    http {
        upstream app {
            server 127.0.0.1:3000;
        }

        server {
            listen       80;
            server_name  localhost;

            client_max_body_size 32m;

            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 Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass http://app/;
                proxy_redirect off;
            }
        }

        server {
            listen       80;
            server_name  sub.localhost;
            client_max_body_size 32m;


            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 Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_pass http://app/;
                proxy_redirect off;
            }
        }    
    }

我嘗試添加域:“。localhost” ,甚至域:“ *。localhost”,我也嘗試添加

app.use(function(req, res, next){
   // Website you wish to allow to connect

    res.setHeader('Access-Control-Allow-Origin', req.headers.host)
    // Request methods you wish to allow
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

    // Request headers you wish to allow
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

    // Set to true if you need the website to include cookies in the requests sent
    // to the API (e.g. in case you use sessions)
    res.setHeader('Access-Control-Allow-Credentials', true);    
    next();
});

到server.js

問題是,當我在本地主機上進行身份驗證時,未在sub.localhost上進行身份驗證。

跨子域的登錄會話

您可以使用:domain:“。app.localhost”,它將起作用。 “ domain”參數在域名中需要1個或多個點才能設置Cookie。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM