私はすべて同じ会社の下にある一連のプログラムを持っています。プログラムのアイデアは非常にマイクロサービス指向であり、認証を処理し、誰かがプログラムの1つにいる限り、認証を処理する1つのサービスがあります。問題は、すべてのドメインで同じCookieにアクセスして、セッション認証のためにこれらのCookieを認証サービスに送信できるようにするために、他のサービスが必要なことです。ログイン/認証サービスでマイクロサービスを設定する適切な方法でない場合は、修正してください。私のサーバー(ノード、エクスプレス、モンゴ)についてはAngularjs、Nodejs、Expressjs、express-sessoion、Mongo Storeを使用したクロスドメインCookie
service.login = function (obj, callback) {
$http.post(loginService + "login", obj, {
withCredentials: true
}).success(function (data) {
callback(data);
})
.error(function (data, status, headers) {
console.log(status);
});
};
:
要求var options = {
pfx: fs.readFileSync('company.pfx'),
passphrase: 'pass',
ca: [fs.readFileSync('gd1.crt'), fs.readFileSync('gd2.crt'), fs.readFileSync('gd3.crt')],
spdy: {
protocols: ['h2', 'spdy/3.1', 'http/1.1'],
plain: false,
'x-forwarded-for': true,
connection: {
windowSize: 1024 * 1024, // Server's window size
// **optional** if true - server will send 3.1 frames on 3.0 *plain* spdy
autoSpdy31: false
}
}
};
var server = spdy.createServer(options, app);
app.use(helmet());
app.use(cookieParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use("/static", express.static('static'));
app.use("/logins", express.static('logins'));
app.set('trust proxy', 1) // trust first proxy for production with a proxy server
app.use(session({
resave: false,
saveUninitialized: true,
genid: function (req) {
return uuid.v4() // use UUIDs for session IDs
},
name: "myToken",
secret: 'mysecret',
cookie: { secure: false, maxAge: (45 * 60000) }, // set secure to true when in production
store: new mongoStore({ url: 'mongodb://' + base + 'sessions' })
}));
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', req.headers.origin);//req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,PATCH');
res.header('Access-Control-Allow-Headers', 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version');
next();
});
:
app.get('/', function (req, res) {
var sess = req.session, token = req.cookies.myToken;
res.send('Hello World!');
});
をこのIをテストするには、私のフロントエンド(Angularjs)については
アプリケーションがデプロイされた状態で私のシステム上で仮想マシンを実行させてから、自分のlocalhost:/アプリケーションも実行しています。 CORSが正しく設定されていれば、私の理解から、同じセッションで2回の通話の間にクッキーが同じになるはずです。助けや提案はありますか?
はい、これはサブドメインでは機能しますが、プログラムは別のドメインで動作します。 – Ohjay44