- Verschifft
- 6. September 2026 um 00:55 UTC
- Autor
- Kamo
- Ausschuss
- f68bcce
Der letzte Weg ein Mitglied könnte einen Live-Anruf und alles in ihrem Werkzeug verlieren Fenster, ohne etwas falsch zu machen. "authenticatedFetch" antwortete JEDEN 401 mit "window.location.href = '/auslog' von einundsiebzig Anruf-Sites, ohne Überprüfung, dass die Sitzung tatsächlich hatte beendet. Das ist das Schwerste, was diese App vom Kunden tun kann: es reißt die Dokument nach unten, die die SIP-Sitzung in ihm leben endet, und es löscht die teilte Redis-Sitzung, in der die anderen Registerkarten des Mitglieds noch arbeiten. Ein 401 ist einfach die üblichste Art und Weise ein Server sagt "nicht diese Anfrage"; es ist kein Beweis dass die Sitzung vorbei ist. Die beiden Code-Pfade auf beiden Seiten wussten das bereits und dieser nicht. "SessionMonitor" benötigt zwei aufeinanderfolgende 401 vor dem Aufruf eines Token abgelehnt, und "SessionManager" Auslaufwarn-Warnsonden /api/session/info und unterschreibt nur auf 404, 401 oder ein TTL bei Null, mit der genannten Begründung, dass "eine transiente Netzwerk-Blip oder 5xx dürfen niemals einen aktiven Benutzer auszetteln". Das macht den dritten stimmen mit ihnen überein: - Ein 401 bestätigt jetzt, bevor er mit der gleichen Sonde umleitet. 404, 401 oder TTL<=0 bedeutet weg und der Auslogerweg erfolgt genau wie zuvor. A 5xx, ein Offline probe, oder eine Live-Sitzung bedeutet, dass der Endpunkt diese eine Anfrage abgelehnt hat, die dem Anrufer als gewöhnliches "Unauthorized"-Versagen statt beantwortet, indem die Registerkarte zerstört wird. - Ein Tab mit keinem eigenen Token ist nie auf einem 401 unterzeichnet, aus dem Grund SessionMonitor buchstabiert für seine eigene Filiale: Es wurde nie HIER authentifiziert, so seine 401 bedeutet "keine Anmeldeinformationen in diesem Tab", und Umleitung würde eine löschen Redis-Session, die seine Geschwister immer noch benutzen. - Die Sonde wird während des Fluges geteilt. Eine Seite, die sechs authentifiziert feuert Anfragen auf einmal bekommen sechs 401 auf einmal, und das ist eine Frage, nicht sechs. - useEntitlements' "isAbandoned" lautet immer noch "Session abgelaufen" und daher bedeutet immer noch "das Dokument geht"; eine Live-Session 401 fällt jetzt durch der gewöhnliche Reprott und Selbstheilung des Laders, die immer haben sollte ihm ist passiert. Und pin die Anruf-Schutzmaßnahmen, die nichts hielt an Ort und Stelle: Eine SIP-Sitzung lebt in diesem Dokument und nichts auf dem Server hält einen Griff it, so dass ein Abriss den Anruf geradezu beendet. Fünf Oberflächen stehen zwischen einem Aufruf und das, und jeder ist ein Effekt innerhalb einer großen Datei - die vorunload bestätigen, der Aktivität Herzschlag, der die TTL am Leben hält, während jemand zuhört anstatt zu tippen, das Pagehide BYE für wenn ein Abriss ist unvermeidbar sowieso, das Tool-Fenster in der Nähe Veto, und jetzt die 401 Bestätigung. liveCallSurvival.test pins alle fünf, und scheitert, wenn alle entfernt (verifiziert durch Entfernen von drei). Quelle greps statt Verhaltenstests, absichtlich: vitest.config.ts sammelt App/lib, App/Komponenten, App/Patienten, App/Stores, App/Netzwerk und app/utils - NICHT App/Kontexte oder App/Haken, wo drei der fünf leben. Ein Test neben ihnen würde durch nichts gesammelt werden und vorbei nie laufen. 456 Testdateien passieren; eslint ist sauber auf jeder Datei berührt.