在我的Django应用程序中,我希望用户在30分钟不活动后自动注销,所以我在settings.py中使用了这个设置:
SESSION_COOKIE_AGE = 1800
但是,使用此设置会在30分钟内将用户注销,无论活动如何。由于Django应用程序中的不活动,如何强制执行自动注销?
答案 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设置,这使得它更容易。