7
votes

Comment appliquer une déconnexion automatique en raison d'une inactivité dans une application Django?

Dans mon application Django, j'aimerais que l'utilisateur soit automatiquement déconnecté après 30 minutes d'inactivité, donc j'ai utilisé ce paramètre dans Paramètres.py:

SESSION_COOKIE_AGE = 1800

p>HOWEver, en utilisant ceci. La définition enregistre l'utilisateur dans 30 minutes indépendamment de l'activité. Comment appliquer une déconnexion automatique en raison d'une inactivité dans une application Django? P> p>


3 Réponses :


3
votes

Vous pouvez mettre à jour la session d'un utilisateur lorsqu'il accède à votre site. Par exemple, dans un middleware, cette session de force doit être réglée à nouveau.

class ActivateUser(object):
    def process_request(self, request):
        if request.user.is_authenticated():
            request.session.modified = True


3 commentaires

Cela rend la mise à jour de la DB sur chaque demande. Pourrait affecter les performances.


@Tomaszwysocki Considérant utiliser le cache Backend ou Redis Backend puis


Merci! Droite, il fait une demande de DB à chaque fois, mais cela fonctionne. Optimisation prématurée de côté, c'est fiable :)



4
votes

Django-session-Security note l'activité utilisateur basée sur des événements côté serveur et javascript tels que MouseMove, KeyPress, etc, etc ... En outre, il avertit l'utilisateur avant d'expirer la session et essaie pas pour expirer la session (où une activité peut-être d'un autre onglet de navigateur?).

Il suffit d'installer et de définir Paramètres.Session_Security_Expire_After = 1800 . Vous pouvez également définir paramètres.session_security_warn_after = 1740 .


0 commentaires

5
votes

comme une mise à jour sur ce sujet. Django a maintenant le session_save_every_request définition qui le fait beaucoup plus facile.


0 commentaires