Donnez à la nouvelle onglet une session, au lieu d'une session qui rebondit pour se connecter

Fixkamo-internal
Expédié
28 août 2026 à 02:59 UTC
Auteur
Kamo
Commite
ce4d901

"Ouvrir dans un nouvel onglet" était "window.open(location.href,"blank", "noopener, n'aufrer" pas de référenceur"). L'id de session n'est pas dans un cookie - il vit en sessionStorage, par onglet, parce que organisations sans domaine de leur propre part, un hôte et un cookie de per-origin serait un seul créneau que n'importe quel onglet pourrait écraser. Les côlons de l'héritage de la fenêtre. hangar de stockage uniquement pendant que la relation d'ouverture survit, et « n'ouvrez » (implicite par Noreferrer aussi) tout cela. Le nouvel onglet a donc commencé par un stocker vide, n'a trouvé aucune session, et rebondi vers la page de connexion. Il semblait que ça marchait parce qu'il était sauvé : le tablet atterrit sur login. où l'auto-connexion lise le cookie réservé à l'hôte et le transmettra dans le org. Enlever cela vers l'avant est ce qui a exposé cela, donc le bouton est fixé plutôt que la redirection restaurée - elle n'a jamais tenu sa propre session. Il utilise maintenant la même poignée de main à une seule touche que toutes les autres entrées inter-tabes: ouvert about:blanc en synchronisme à l'intérieur du clic (une attente d'attente perd d'abord transitoire activation et WebKit bloque le pop-up), frapper un OTK, puis naviguer vers /validate avec la page en cours dans le 'next'. L'OTK se tourne vers la même session, donc le nouveau Un onglet est vraiment un autre cas de la même gen, sur la page d'où il a été ouvert. «newtab» est enregistré comme objectif OTK de chargement de documents. Un but non inscrit n'est pas rejeté - il retombe silencieusement à un TTL des 10s, sur lequel /api/validate ne peut pas se fier à survivant, puisqu'il lit la clé à partir d'un Redis REPLICA et réaroûte le délai de réplication avant même l'application bottes. Trois choses sur lesquelles les notes de la deuxième fenêtre ont mise en garde et cela évite: la clé continue /valider avec la destination en "next", parce que le bord réécrit n'importe quel . demande /valider et rejeter le chemin d'origine; la cible est une URL absolue tenu dans une variable, parce qu'un littéral attribué à .location.href'face la navigation par le client de contrôle et la construction Docker avec elle; et /validate est un chemin de session, de sorte qu'il ne signera pas la nouvelle languette alors qu'elle n'est pas authentifiée.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation