@d4rk_light

Как сохранить аутентификацию при переходе на поддомен?

У меня есть сервер на Nginx на котором 2 виртуальных сервера сервер 1: localhost и сервер 2: sub.localhost.
Для авторизации я использую passport.js, express.js и express.js cookie-session. Я могу по отдельности авторизироватся на обоих доменах но мне надо чтобы пользователю не надо было бы это делать для каждого поддомена по новому.

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;
        }
    }    
}


В чём ошибка?
  • Вопрос задан
  • 524 просмотра
Пригласить эксперта
Ответы на вопрос 2
pomeo
@pomeo
Вот где у вас domain:"localhost" попробуйте точку впереди localhost, т.е. domain:".localhost"
Ответ написан
@d4rk_light Автор вопроса
ах да забыл упомянуть я пробовал уже domain:".localhost", domain:"*.localhost", domain:"sub.localhost", domain:"*" и многое другое так же я добавил в config angular $httpProvider.defaults.withCredentials = true;, и пробовал добавлять

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
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы