9
votes

Django Session expire au navigateur fermer ou après le temps

La documentation Django stipule:

Vous pouvez contrôler si le framework de session utilise la longueur du navigateur sessions vs sessions persistantes avec le Session_Expire_AT_Browser_Close définir.

si session_expire_at_browser_close est défini sur true, Django utilisera Cookies de longueur de navigateur - Cookies qui expirent dès que l'utilisateur ferme son navigateur. Utilisez ceci si vous voulez que les gens devaient se connecter à chaque fois qu'ils ouvrent un navigateur.

Ce paramètre est une défaillance globale et peut être écrasée à un niveau de session en appelant explicitement la méthode SET_Expiry () de Demande.Session comme décrit ci-dessus à l'aide de sessions sous vues.

alors quand je définis session_expire_at_browser_close sur true dans mon fichier de paramètres, c'est en effet ce qu'il fait. C'est bien parce que je veux que la session d'un utilisateur expire sur le navigateur proche. Cependant, je souhaite également que la session d'un utilisateur expire après, par exemple, 15 minutes d'inactivité. Si j'utilise Set_Expiry () mentionné ci-dessus, la session_expire_at_browser_close est remplacée, de sorte que si un utilisateur ferme le navigateur, puis réinversion du navigateur avant l'expiration, la session est toujours valide. Pas ce que je veux.

En outre, la documentation de Set_Expiry () dit que les sessions expirent après la durée définie de inactivité . Ce n'est en fait pas vrai. Il expire quoi que ce soit, que mon utilisateur clique sur le site ou non.

Donc de résumer, ce que je veux faire est:

  1. Mes sessions ont configuré que si l'utilisateur ferme le navigateur, la session expire automatiquement.
  2. Définissez une longueur d'expiration de la session mise à jour avec l'activité, c'est-à-dire si un utilisateur fait quelque chose d'autre sur le site, l'expiration est réinitialisée.

    pensées / suggestions?


2 commentaires

Testez ceci après la fermeture de votre navigateur non seulement


Cela peut être ce que vous étiez après. django-session-security.readthedocs.io/fr/Latest


5 Réponses :


4
votes

Comme Jiaaro suggéré à Cette réponse vous peut utiliser session_expire_at_browser_close et définir une horodatage sur la session à chaque requête et ajouter un middleware personnalisé pour gérer l'inactivité.


2 commentaires

Il ne fonctionne pas avec Chrome V23 (au moins sur Ubuntu 12.04) Remarque : Certains navigateurs (Chrome, par exemple) fournissent des paramètres permettant aux utilisateurs de continuer à parcourir des sessions après la fermeture et la réouverture le navigateur. Dans certains cas, cela peut interférer avec le paramètre Session_Expire_AT_Browser_Close ... Source: Navigateur-longueur-sessions-VS-Persisents-sessions


Je suis peut-être faux, cependant, des spectacles de lecture qui expirent à la fermeture du navigateur ne sont pas équivalents à expirer à la fenêtre proche



0
votes

de docs HTTPS : //docs.djangoproject.com/fr/1.8/topics/http/sessions/#browser-longueur-sesstions-vs-persistent-sessions

Certains navigateurs (Chrome, par exemple) fournissent des paramètres permettant aux utilisateurs de continuer à parcourir des sessions après la fermeture et la réouverture du navigateur. Dans certains cas, cela peut interférer avec le paramètre Session_Expire_AT_Browser_Close et empêcher les sessions d'expirer sur le navigateur Fermer. Veuillez être conscient de cela tout en test des applications Django qui ont le paramètre Session_Expire_AT_Browser_Close activé.


0 commentaires

0
votes

Les sessions expirent lorsque l'utilisateur ferme le navigateur:

Cette exigence mise en œuvre en définissant session_expire_at_browser_close à vrai .

Référence

Les sessions expirent après une période d'inactivité:

session_cookie_age est l'âge des cookies de session, en quelques secondes.
Par défaut: 1209600 (2 semaines, en secondes)

Référence

Vous devez définir ces options sur votre paramètre / __ init __. py


0 commentaires

0
votes

Cache de moteur de recherche Assurez-vous que la session sera fermée lorsque ensemble avec session_expire_at_browser_close = true xxx


0 commentaires

0
votes

Par défaut, session_expire_at_browser_close est défini sur FALSE, ce qui signifie que les cookies de session seront stockés dans les navigateurs des utilisateurs aussi longtemps que session_cookie_age . Utilisez ceci si vous ne voulez pas que les gens doivent se connecter à chaque fois qu'ils ouvrent un navigateur.

Si session_expire_at_browser_close est défini sur true, Django utilisera des cookies de la longueur de navigateur - des cookies expirant dès que l'utilisateur ferme son navigateur. Utilisez ceci si vous voulez que les gens doivent se connecter à chaque fois qu'ils ouvrent un navigateur.


0 commentaires