Node.js keycloak- nodejs -connect адаптер (версия 4.3) используется в шлюзе приложений для защиты конечных точек микросервисов в соответствии с документами :
var session = require('express-session');
var Keycloak = require('keycloak-connect');
var memoryStore = new session.MemoryStore();
var keycloak = new Keycloak({ store: memoryStore });
Однако после того, как пользователь вошел в систему / вышел из системы, connect.sid
cook ie, происходящий из express -сессии , все еще сохраняется в браузере. Это вызывает непредвиденные проблемы, если впоследствии другой пользователь входит в систему через тот же браузер.
Как правильно очистить connect.sid
express -сессионного повара ie правильно?
Переопределение кода хранилища сессий адаптера путем добавления функции response.clearCookie('connect.sid', { path: '/' });
к unstore
помогло. Тем не менее, это кажется слишком сложным:
var SessionStore = require('keycloak-connect/stores/session-store');
let store = (grant) => {
return (request, response) => {
request.session[SessionStore.TOKEN_KEY] = grant.__raw;
};
};
let unstore = (request, response) => {
delete request.session[SessionStore.TOKEN_KEY];
response.clearCookie('connect.sid', { path: '/' });
};
SessionStore.prototype.wrap = (grant) => {
if (grant) {
grant.store = store(grant);
grant.unstore = unstore;
}
};
Какой-нибудь адаптер keycloak или express -сессия конфигурации лучше достигают цели?