Мы работаем над переносом нашего монолитного приложения ASP.NET Webform на Microservices, для начала мы используем Nginx в качестве прокси-маршрутизатора и Node express в качестве шлюза API.Из браузера любой запрос .aspx будет перенаправлен в существующее приложение ASP.NET Webform из Nginx, а новые вызовы будут перенаправлены на API-шлюз. До тех пор, пока все маршрутизация не будет работать нормально, но проблема заключается в управлении сессиями, приложение ASP.NET Webform использует Redis какхранилище сеансов и тот же сеанс, к которому мы пытаемся получить доступ к шлюзу API. ASP.NET хранит sessionID в файле cookie «ASP.NET_SessionId» и в Redis создает два ключа для сеанса, например SessionID_Data SessionID_Internal. Мы пытались установить сеанс Express-redis на один и тот же«ASP.NET_SessionId» в шлюзе, но он создает другой ключ, чем мы пытались получить значение cookie и пытались сгенерировать тот же идентификатор в API-шлюзе
enter code here
app.use(session({
genid: function(req) {
//Get SessionID from Cookie and Return
},
store: new RedisStore({
host:HOST,
port:PORT,
pass:PASSWORD,
prefix: APP_PREFIX //Application Prefix used by ASP.NET
}),
name: 'ASP.NET_SessionId',
secret: APP_SECRET,
resave: false,
saveUninitialized: false
}));
Проблема в том, что ASP.NET создает два ключа в Redis впользовательский сеанс, так же, мы не можем установить шлюз API
. Есть ли какой-либо способ поделиться сеансом веб-формы ASP.NET в API-шлюзе или если мы создадим аутентификацию и управление сеансом как отдельный микросервис, то этот сеанс можно использовать воба ASP.NET веб-форма и API-шлюз, который будет автоматически увеличивать TTL Redis Keys при каждом запросе?