tools domain deploy python django deployment session cookies

python - domain - ¿Cómo obtener distintas aplicaciones de Django en el mismo subdominio para compartir cookies de sesión?



request.session django (2)

Tenemos un par de aplicaciones de Django implementadas en el mismo subdominio. Algunos usuarios avanzados deben saltar entre estas aplicaciones. Noté que cada vez que rebotan entre las aplicaciones, su cookie de sesión recibe una nueva ID de sesión de Django.

No utilizo mucho la tabla de sesiones de Django, excepto en un flujo de trabajo complejo. Si el usuario rebota entre las aplicaciones mientras está en este flujo de trabajo, pierde su sesión y tiene que comenzar de nuevo.

Busqué en el código de la sesión de Django y descubrí que:

django.conf.settings.SECRET_KEY

se usa para realizar una verificación de integridad de las sesiones en cada solicitud. Si la verificació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 pasar la verificación de integridad y permitirles compartir sesiones de Django. Sin embargo, no pareció funcionar.

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

Gracias por adelantado


En cambio, te aconsejaría que establezcas SESSION_COOKIE_NAME en diferentes valores para las dos aplicaciones. Sus usuarios aún tendrán que iniciar sesión dos veces al principio, pero sus sesiones no entrarán en conflicto: si inician sesión en la aplicación A, luego en la aplicación B y vuelven a A, aún tendrán 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, investiga algo como django-cas. Todavía tendrá 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 quisiera, podría:

  • asegúrese de que las dos aplicaciones django compartan el mismo SECRET_KEY
  • asegúrese de que las dos aplicaciones django comparten el mismo SeSSON_COOKIE_NAME
  • asegúrese de que SESSION_COOKIE_DOMAIN esté configurado para permitir que las dos instancias compartan cookies. (Si realmente comparten el mismo subdominio, probablemente su configuración actual sea correcta).
  • 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 coloque en la sesión tenga sentido en ambas bases de datos de Django: al menos, eso incluirá la identificación del usuario, ya que Django auth la usa para recordar qué usuario está conectado.

Dicho todo esto, en realidad no he intentado todo esto, ¡así que aún puedes tener problemas!