1

Ich bin ein wenig mehr dann stecken im Moment. Ich verbrachte den besseren Teil von 3 Tagen damit, dieses kleine Problem herauszufinden, von dem ich hoffe, dass es nur ein einfacher Fehler ist.Austausch von Sitzungen zwischen Domäne und Subdomain

Das Problem liegt darin, ich kann Sitzungen nicht erhalten, um zwischen example.com und b.example.com zu teilen. Ich verwende AWS und verwende derzeit SSL. Ich muss alle Lösungen ausprobiert haben, die Leute sagen, wird das Problem von der Verwendung von CORS lösen, die Domain mit einem '.' (Glaube, das ist veraltet und nicht jetzt notwendig), zu allem anderen, was ich online lesen kann. Das hat mich überzeugt, dass es etwas von meinem anderen Code war, also habe ich alles kommentiert und kann leider immer noch nicht zur Arbeit kommen. Ich überprüfe, ob die Sitzung geteilt wird, indem ich die SessionID in einer Middleware ausdrucke und die Subdomain und die Domain besuche und dann die Logs überprüfe. Für die Subdomain "host" ich es auf vhost, ich poste meinen Code unten. Vielen Dank im Voraus und wenn Sie weitere Informationen benötigen, werde ich versuchen, es so schnell wie möglich zu posten.

Haupt app.js

var express = require('express'); 
var app = express(); 
var vhost = require('vhost'); 
var mongoose = require('mongoose'); 
var bodyParser = require('body-parser'); 
var helmet = require('helmet'); 
var flash = require('req-flash'); 
var cors = require('cors'); 
var session = require('express-session'); 
var favicon = require('serve-favicon'); 
var MongoStore = require('connect-mongo')(session); 


var middlewares = require("./app/middlewares/middleware.js"); 
var controllerLogic = require('./app/controllers/logic/controllerLogic.js'); 

//app.set('views', express.static(__dirname + '/views')); 
app.set('view engine', 'ejs'); 
app.set('trust proxy', 1); 


mongoose.connect(process.env.MONGOOSE_CONNECT); 
var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    console.log("MONGODB connected"); 
}); 



app.use(helmet()); 
app.use(favicon('./public/img/favicon.png')); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 
app.use(express.static(__dirname + '/public')); 
app.use(session({ 
    name: 'exampleSession', 
    genid: function(req) { 
    return require('crypto').randomBytes(48).toString('hex'); 
    }, 
    rolling: true, 
    secret: process.env.COOKIE_SESS_SECRET, 
    resave: false, 
    saveUninitialized: false, 
    domain: 'example.co', 
    cookie: { 
     test: 'help', 
     secure: true, 
     maxAge: 270000, 
     httpOnly: true //http://expressjs.com/en/advanced/best-practice-security.html 
    }, 
    store: new MongoStore({ mongooseConnection: mongoose.connection }) 
})); 
app.use(middlewares.prettifyDomain); 
app.use(flash()); 
app.use(controllerLogic.flashAll); 
app.use(vhost('b.example.co', require('./libs/vhost/b.app.js').app)); 
app.get('/ping', function (req, res) { 
    res.send('successfuly pinged(kinda)!'); 
}); 
require('./app/controllers/routes/boards.js')(app); 
require('./app/controllers/routes/user.js')(app); 
require('./app/controllers/routes/main.js')(app); 



app.listen(process.env.PORT || 80); 

Sub-Domain vHost Datei

var express = require('express'); 
var app = express(); 
var router = express.Router(); 

var middlewares = require("./../../app/middlewares/middleware.js"); 

require('./../../app/controllers/router/routes.js')(router); 


app.use(router); 

exports.app = app; 

Wenn es sollte arbeiten, wie es ich versuche, ist werden mehr Tests zu tun, wenn ich wieder nach Hause und Post was ich gefunden habe, wenn überhaupt. Nochmals vielen Dank!

Edit: Es scheint wie vhost erstellt eine neue Sitzung jedes Mal, wenn ich auf der Sub-Domain aktualisieren. Ich bin umgezogen zu express-subdomain. Als ich das tat, erschien ein Cookie auf der Subdomain, als es auf vhost keine gab. Die SessionId unterscheidet sich immer noch zwischen der Subdomain und der Hauptdomäne, aber jetzt hat die Subdomain keine neue SessionID für jede Anfrage. Die Änderung sieht so aus ...

Antwort

0

Ermittelt mein Problem und war wahrscheinlich aufgrund meiner Suche zu anderen Lösungen Menschen schnell gepostet.

Das Problem war ich hatte die Domain außerhalb des Cookies, so dass es nicht zu meiner Domain zu der Subdomain ging. Sobald ich

setzen
domain: 'example.co', 

innen

cookie: { 
} 

fixiert es das Problem. Beachten Sie auch, dass ich dachte, dass ich cors verwenden musste, aber ich entfernte sie und es funktionierte immer noch. Hoffe, das hilft, wenn Sie das gleiche Problem haben!

Verwandte Themen