Abmelden über beide Domains reparieren
Auf der Bot-Seite ließ sich das Abmelden nicht durchführen, und auf dem Hub kam beim Profil ein 401 — beides dieselbe Ursache: Ein Cookie, das ohne Domain-Angabe gesetzt wurde, gilt nur für genau diesen Host und ist technisch ein anderes als das domain-weite. Wer sich vor dem Umstellen auf die gemeinsame Login-Domain angemeldet hatte, trug also noch das alte, host-gebundene Cookie mit sich herum. Das Abmelden löschte nur die domain-weite Variante, das alte blieb liegen — und auf der Hub-Domain war es nie vorhanden, daher dort die fehlende Anmeldung. Jetzt räumt das Abmelden beide Varianten ab, und das Anmelden entfernt die host-gebundene Altlast gleich mit, damit gar nicht erst zwei Cookies nebeneinander existieren. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+12
-4
@@ -128,8 +128,12 @@ export function registerAuthRoutes(app, client) {
|
||||
// Mit gesetzter Cookie-Domain (z. B. .d4rkst3r.de) gilt die Anmeldung
|
||||
// auf Hub und Bot-Seite gleichzeitig
|
||||
const domain = cookieDomain();
|
||||
reply.clearCookie(STATE_COOKIE, { path: '/auth' });
|
||||
// Altlast aufräumen: ein früher host-gebunden gesetztes Cookie würde
|
||||
// sonst neben dem neuen bestehen bleiben und beim Abmelden übrig sein
|
||||
if (domain) reply.clearCookie(SESSION_COOKIE, { path: '/' });
|
||||
|
||||
return reply
|
||||
.clearCookie(STATE_COOKIE, { path: '/auth' })
|
||||
.setCookie(SESSION_COOKIE, JSON.stringify(session), {
|
||||
path: '/', httpOnly: true, sameSite: 'lax', maxAge: 7 * 24 * 3600, signed: true,
|
||||
...(domain ? { domain } : {}),
|
||||
@@ -140,9 +144,13 @@ export function registerAuthRoutes(app, client) {
|
||||
});
|
||||
|
||||
app.get('/auth/logout', async (request, reply) => {
|
||||
// Beide Varianten löschen: Ein Cookie, das ohne Domain-Angabe gesetzt
|
||||
// wurde, gilt nur für genau diesen Host und ist ein anderes als das
|
||||
// domain-weite. Wer sich vor der Umstellung angemeldet hat, hat noch
|
||||
// das alte — würden wir nur eins löschen, bliebe er angemeldet.
|
||||
reply.clearCookie(SESSION_COOKIE, { path: '/' });
|
||||
const domain = cookieDomain();
|
||||
return reply
|
||||
.clearCookie(SESSION_COOKIE, { path: '/', ...(domain ? { domain } : {}) })
|
||||
.redirect('/');
|
||||
if (domain) reply.clearCookie(SESSION_COOKIE, { path: '/', domain });
|
||||
return reply.redirect('/');
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user