From 71c6ba1ce5962aaced02e977ee0986b49a50b9ef Mon Sep 17 00:00:00 2001 From: tristan Date: Fri, 26 Jun 2026 16:02:51 +0200 Subject: [PATCH] fix(auth) : renomme le cookie JWT en BEARER_LESSTIME (LST-72) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Évite la collision de cookie sur le domaine localhost en dev : plusieurs apps Symfony (ex: Starseed) posaient toutes un cookie `BEARER` partagé, se faisant écraser l'une l'autre → déconnexions croisées. Le cookie est désormais nommé par app. - lexik : token_extractors.cookie.name + clé set_cookies - security : logout.delete_cookies - docs (CLAUDE.md, README) mises à jour Note : vider une fois les cookies de localhost pour purger l'ancien BEARER. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 2 +- README.md | 2 +- config/packages/lexik_jwt_authentication.yaml | 8 ++++++-- config/packages/security.yaml | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index f1a7143..eae2298 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,7 +8,7 @@ Application de gestion de projet. Monorepo Symfony 8 (API Platform 4) + Nuxt 4. - **Backend** : PHP 8.4, Symfony 8.0, API Platform 4, Doctrine ORM, PostgreSQL 16 - **Frontend** : Nuxt 4 (SSR off / SPA), Vue 3, Pinia, Tailwind CSS, @malio/layer-ui, nuxt-toast, @nuxtjs/i18n, @nuxt/icon -- **Auth** : JWT HTTP-only cookie (lexik/jwt-authentication-bundle), login à `/login_check`, cookie `BEARER` +- **Auth** : JWT HTTP-only cookie (lexik/jwt-authentication-bundle), login à `/login_check`, cookie `BEARER_LESSTIME` (nommé par app pour éviter la collision avec d'autres apps Symfony sur `localhost` en dev) - **Docker** : PHP-FPM + Node 24, Nginx (port 8082), PostgreSQL (port 5435) ## Structure diff --git a/README.md b/README.md index ba7b601..94e3294 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,7 @@ Configuration : `infra/dev/.env.docker` (override local : `infra/dev/.env.docker Toutes les routes API sont préfixées `/api` (API Platform). - Documentation auto-générée : **http://localhost:8082/api** -- Auth : `POST /login_check` avec `{ username, password }` → cookie JWT `BEARER` +- Auth : `POST /login_check` avec `{ username, password }` → cookie JWT `BEARER_LESSTIME` ## Serveur MCP diff --git a/config/packages/lexik_jwt_authentication.yaml b/config/packages/lexik_jwt_authentication.yaml index ade6ecd..5d3979f 100644 --- a/config/packages/lexik_jwt_authentication.yaml +++ b/config/packages/lexik_jwt_authentication.yaml @@ -9,11 +9,15 @@ lexik_jwt_authentication: enabled: false cookie: enabled: true - name: BEARER + # Cookie nommé par app (BEARER_LESSTIME) pour éviter la collision avec + # d'autres apps Symfony servies sur le même domaine localhost en dev + # (ex: Starseed reste sur BEARER) : un cookie `BEARER` partagé se ferait + # écraser d'une app à l'autre → déconnexions croisées. + name: BEARER_LESSTIME query_parameter: enabled: false set_cookies: - BEARER: + BEARER_LESSTIME: lifetime: '%env(int:JWT_COOKIE_TTL)%' samesite: lax path: / diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 24cb6de..56b209b 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -47,7 +47,7 @@ security: target: /login enable_csrf: false delete_cookies: - BEARER: + BEARER_LESSTIME: path: / # Activate different ways to authenticate: