Local D2 Cookies
Local D2 cookies para junior
Section titled “Local D2 cookies para junior”Esta pagina es para el dia a dia. Si acabas de bajar cambios y ves Authorization en Network, empieza aqui.
Si quieres entender que hace cada script que se subio al repo, lee tambien Scripts D2 y QA.
Resumen rapido
Section titled “Resumen rapido”Para levantar local normal:
Backend:cd hemia-assistance-back-legacynpm run dev
Frontend:cd hemia-assistance-front-legacynpm run serve
Para comprobar:Network no debe tener Authorization.Cookies deben ser medsync_at_dev, medsync_rt_dev, medsync_csrf_dev.document.cookie solo debe mostrar medsync_csrf_dev.localStorage/sessionStorage no deben tener tokens.
Si ves Authorization:1. No estas en D2.2. Revisa que no usaste legacy.3. Limpia navegador.4. Reinicia backend/frontend.Que significa esto en palabras simples
Section titled “Que significa esto en palabras simples”Cuando estas en D2, el navegador ya no manda un header llamado Authorization para autenticar al usuario.
En lugar de eso, el backend guarda la autenticacion en cookies:
medsync_at_dev: access token local, debe serHttpOnly.medsync_rt_dev: refresh token local, debe serHttpOnly.medsync_csrf_dev: token CSRF local, si puede verse desde JavaScript.
HttpOnly significa: JavaScript no puede leer esa cookie. Eso protege access/refresh contra robo desde scripts del frontend.
En D2 local:
- el frontend no debe guardar access token;
- el frontend no debe guardar refresh token;
- el frontend no debe mandar
Authorization; - el navegador manda cookies automaticamente;
- las mutaciones deben mandar
X-CSRF-Token.
Que NO significa D2
Section titled “Que NO significa D2”D2 no significa que ya migramos a sesiones opacas 100% server-side.
El backend puede seguir usando JWT internamente dentro de una cookie HttpOnly. Eso esta bien para esta fase.
Lo importante es esto:
- JavaScript no puede ver el JWT.
localStorageno puede ver el JWT.sessionStorageno puede ver el JWT.- Network del frontend normal no usa
Authorization.
Comandos que si debes usar
Section titled “Comandos que si debes usar”Backend:
cd F:\HemiaAssistantGlobal\hemia-assistance-back-legacynpm run devTambien valido:
npm run dev:d2Frontend:
cd F:\HemiaAssistantGlobal\hemia-assistance-front-legacynpm run serveTambien valido:
npm run serve:d2npm run dev y npm run serve son los comandos normales de desarrollo local. Hoy ya prenden D2 local por default.
Comandos que NO debes usar para desarrollo normal
Section titled “Comandos que NO debes usar para desarrollo normal”Estos comandos son solo para regresiones controladas o comparaciones legacy:
npm run dev:legacynpm run serve:legacySi usas estos comandos, si puedes ver Authorization.
Eso es esperado porque estas encendiendo legacy manualmente.
No uses estos comandos para desarrollo normal.
Comando que puede confundir
Section titled “Comando que puede confundir”Backend:
npm startnpm start no fue cambiado para D2 local. Para desarrollo local normal usa npm run dev.
Si alguien usa npm start, debe verificar el env manualmente porque puede no prender el modo D2.
Levantar local D2 desde cero
Section titled “Levantar local D2 desde cero”-
Actualiza ambos repos.
Usa el flujo de Git normal del equipo para backend y frontend.
-
Instala dependencias si hace falta.
Solo si cambian
package.jsono lockfiles, o si el repo esta recien clonado:Terminal window npm install -
Cierra terminales viejas.
Una terminal vieja puede seguir corriendo frontend o backend con variables legacy.
-
Revisa si hay procesos usando puertos.
No mates procesos a ciegas. Primero identifica el PID y confirma que sea tu Node local.
Terminal window netstat -ano | findstr :3009netstat -ano | findstr :8080Si usas otro puerto, cambia el numero. Por ejemplo
:8081o:8098. -
Borra storage y cookies del navegador.
Si vienes de legacy, puede haber residuos viejos.
-
Levanta backend.
Terminal window cd F:\HemiaAssistantGlobal\hemia-assistance-back-legacynpm run dev -
Levanta frontend.
Terminal window cd F:\HemiaAssistantGlobal\hemia-assistance-front-legacynpm run serve -
Abre el frontend local.
Normalmente sera
http://localhost:8080o el puerto que muestre Vue CLI. -
Haz login.
Usa usuario QA/local permitido por el equipo. No pegues passwords ni tokens en chats.
-
Verifica cookies y Network.
Si aparece
Authorization, no cierres el diagnostico: revisa la seccion de troubleshooting.
Como limpiar navegador
Section titled “Como limpiar navegador”En Chrome o Edge:
- Abre DevTools.
- Ve a
Application. - Entra a
Storage. - Usa
Clear site data. - Repite o verifica para los origenes locales que hayas usado:
http://localhost:8080http://127.0.0.1:8080http://localhost:8081http://127.0.0.1:8081- cualquier otro puerto local que hayas usado.
- Cierra la pestana.
- Abre una pestana nueva.
- Vuelve a entrar y prueba login.
Alternativa por consola:
localStorage.clear()sessionStorage.clear()document.cookieImportante:
document.cookiesirve para ver cookies noHttpOnly.document.cookieno puede borrar cookiesHttpOnly.- Logout y backend deben limpiar cookies auth.
- Si tienes duda, usa
Clear site data; es la opcion mas clara para borrar residuos locales.
Como saber si estas en D2
Section titled “Como saber si estas en D2”Network
Section titled “Network”Despues de login, abre una peticion a la API.
Debe verse:
Authorization: NO debe existirCookie: puede existir, el navegador la manda automaticamenteX-CSRF-Token: debe existir en POST/PUT/PATCH/DELETESi ves Cookie, no significa que algo esta mal. En D2, el navegador adjunta cookies automaticamente.
Application > Cookies
Section titled “Application > Cookies”Para API local deben existir:
medsync_at_devmedsync_rt_devmedsync_csrf_devEsperado:
medsync_at_dev HttpOnly = truemedsync_rt_dev HttpOnly = truemedsync_csrf_dev HttpOnly = falseConsole
Section titled “Console”Ejecuta:
document.cookieResultado esperado:
Puede aparecer medsync_csrf_devNO debe aparecer medsync_at_devNO debe aparecer medsync_rt_devStorage
Section titled “Storage”En localStorage y sessionStorage no debe haber:
tokenaccess_tokenrefresh_tokenrefreshtokenjwtAuthorizationpermissionsbusinesstenantOperationalPuede existir:
vue-session-keyhemia_login_logologlevel:webpack-dev-servervue-session-key puede existir como llave tecnica del plugin, pero no debe contener tokens ni contexto auth sensible.
Como saber si estas en legacy
Section titled “Como saber si estas en legacy”Estas en legacy o en un estado mezclado si ves cualquiera de estas senales:
- Network muestra
Authorization. - Login devuelve access token o refresh token en JSON.
- Refresh manda refresh token en el body.
localStorageosessionStoragetienen token, refresh token, permisos, business o tenant operacional.document.cookiemuestra access/refresh.- Arrancaste con
npm run dev:legacyonpm run serve:legacy. - Dejaste abierta una terminal vieja antes de bajar cambios.
Verificacion rapida por comando
Section titled “Verificacion rapida por comando”Backend:
cd F:\HemiaAssistantGlobal\hemia-assistance-back-legacynode scripts\qa\d2-auth-cookie-config.js validatenode scripts\qa\d2-refresh-cookie-runtime-regression.js fullFrontend:
cd F:\HemiaAssistantGlobal\hemia-assistance-front-legacynode scripts\qa\d2-frontend-regression.js fullnode scripts\qa\d2-session-lifecycle-frontend.js fullBrowser:
node scripts\qa\d2-browser-security-evidence.jsLa prueba browser puede requerir backend/frontend levantados, URLs por env y fixtures ficticios. No debe usar datos reales ni imprimir passwords, tokens o cookies completas.
Checklist de 2 minutos
Section titled “Checklist de 2 minutos”- Backend levantado con
npm run dev. - Frontend levantado con
npm run serve. - No usaste
dev:legacyniserve:legacy. - Limpiaste
Clear site datasi venias de una prueba vieja. -
Application > Cookiesmuestramedsync_at_dev,medsync_rt_dev,medsync_csrf_dev. -
medsync_at_devymedsync_rt_devsonHttpOnly=true. -
document.cookiesolo muestramedsync_csrf_dev. - Network no tiene
Authorization. - Mutaciones tienen
X-CSRF-Token. - Storage no contiene tokens ni contexto auth sensible.
No me funciona: que mandar para pedir ayuda
Section titled “No me funciona: que mandar para pedir ayuda”Manda evidencia concreta, sin secretos:
-
Comando exacto usado para backend.
-
Comando exacto usado para frontend.
-
URL frontend usada.
-
URL API configurada.
-
Screenshot de Network donde se ve
Authorization. -
Screenshot de
Application > Cookies. -
Resultado de este comando si aplica:
Terminal window npm run dev -- --helpSi no aplica, manda los primeros logs de arranque sin secretos.
-
Confirma si usaste
serve:legacyodev:legacy. -
Confirma si hiciste
Clear site data.
No mandes passwords, tokens, OTPs, cookies completas ni archivos .env.local.