由于Django应用程序中的不活动,如何强制执行自动注销?

时间:2012-04-22 05:01:31

标签: django django-sessions

在我的Django应用程序中,我希望用户在30分钟不活动后自动注销,所以我在settings.py中使用了这个设置:

SESSION_COOKIE_AGE = 1800

但是,使用此设置会在30分钟内将用户注销,无论活动如何。由于Django应用程序中的不活动,如何强制执行自动注销?

3 个答案:

答案 0 :(得分:3)

django-session-security注意基于服务器端和javascript事件(如mousemove,keypress等)的用户活动...此外,它会在会话到期之前警告用户,并尝试使会话到期(其中任何活动可能来自另一个浏览器选项卡?)。

只需安装它并设置settings.SESSION_SECURITY_EXPIRE_AFTER=1800即可。您也可以设置settings.SESSION_SECURITY_WARN_AFTER=1740

答案 1 :(得分:2)

您可以在访问您的网站时更新用户的会话。例如,在中间件中,此强制会话将再次设置。

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

答案 2 :(得分:1)

作为此主题的更新。 Django现在具有SESSION_SAVE_EVERY_REQUEST设置,这使得它更容易。