¿Cómo obtener distintas aplicaciones de Django en el mismo subdominio para compartir la cookie de sesión?

Tenemos un par de aplicaciones Django desplegadas en el mismo subdominio. Algunos usuarios avanzados necesitan saltar entre estas aplicaciones. Noté que cada vez que rebotan entre aplicaciones, su cookie de sesión recibe un nuevo ID de sesión de Django.

No uso mucho la tabla de sesión de Django excepto en un flujo de trabajo complejo. Si el usuario rebota entre las aplicaciones mientras se encuentra en este flujo de trabajo, pierde la sesión y debe comenzar de nuevo.

Revisé el código de sesión de Django y descubrí que:

django.conf.settings.SECRET_KEY

se utiliza para realizar una verificación de integridad en las sesiones en cada solicitud. Si la comprobación de integridad falla, se crea una nueva sesión. Al darme cuenta de esto, cambié la clave secreta en cada una de estas aplicaciones para usar el mismo valor, pensando que esto permitiría que pasara la verificación de integridad y les permitiera compartir sesiones de Django. Sin embargo, no parece funcionar.

¿Hay alguna forma de hacer esto? ¿Me estoy perdiendo algo más?

Gracias por adelantado

En su lugar, le aconsejo que configure SESSION_COOKIE_NAME en diferentes valores para las dos aplicaciones. Sus usuarios aún tendrán que iniciar sesión dos veces inicialmente, pero sus sesiones no entrarán en conflicto: si inician sesión en la aplicación A, luego en la aplicación B y regresan a A, seguirán teniendo su sesión A.

Compartir sesiones entre instancias de Django probablemente no sea una buena idea. Si quieres algún tipo de inicio de sesión único, busca algo como django-cas. Seguirá teniendo 2 sesiones (como debería), pero el usuario solo iniciará sesión una vez.

Estoy de acuerdo en que compartir sesiones entre instancias de Django probablemente no sea una buena idea. Si realmente quisieras, podrías:

  • Asegúrate de que las dos aplicaciones django compartan el mismo SECRET_KEY.
  • asegúrese de que las dos aplicaciones django compartan el mismo SeSSON_COOKIE_NAME
  • asegúrese de que SESSION_COOKIE_DOMAIN esté configurado en algo que permita que las dos instancias compartan cookies. (Si realmente comparten el mismo subdominio, su configuración actual probablemente esté bien).
  • asegúrese de que ambas instancias de Django utilicen el mismo backend de sesión (la misma base de datos, el mismo directorio de archivos, la misma configuración de memcached, etc.)
  • asegúrese de que todo lo que se ponga en la sesión tenga sentido en las dos bases de datos de Django: como mínimo, incluirá el ID de usuario, ya que Django auth lo utiliza para recordar qué usuario está conectado.

Dicho todo esto, en realidad no he intentado todo esto, por lo que aún puede tener problemas.