微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关闭浏览器后,django中的会话未过期

如何解决关闭浏览器后,django中的会话未过期

我是django和python的新手。用户关闭网络浏览器但未注销后,会话期满出现问题。我可以看到,即使等待了10分钟以上,会话仍在会话表中保持活动状态。我更新了自定义的middleware.py和setting.py文件,如下所示:

    middleware.py
    from django.contrib.auth import logout
    from django.contrib import messages
    import datetime
    import syslog
    class SessionIdleTimeout(deprecation.MiddlewareMixin if DJANGO_VERSION >= (1,10,0) else object):
   def process_request(self,request):
   if request.user.is_authenticated():
       current_datetime = datetime.datetime.Now()
       syslog.syslog("This user is authenticated")
       if ('last_login' in request.session):
           last = (current_datetime - request.session['last_login']).seconds
           syslog.syslog("there is last_login present in request.session.")
           if last > settings.SESSION_IDLE_TIMEOUT:
               syslog.syslog("calling loggout since last > SESSION_IDLE_TIMEOUT")
               logout(request,login.html)
       else:
           syslog.syslog("no logout yet")
           request.session['last_login'] = current_datetime
   return None


 In setting.py
 MIDDLEWARE = [
 ..
 'webapp.middleware.SessionIdleTimeout',..

 SESSION_EXPIRE_AT_broWSER_CLOSE = True
 INACTIVE_TIME = 10*60  # 10 minutes - or whatever period you think appropriate
 SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
 SESSION_EXPIRE_AT_broWSER_CLOSE= True
 SESSION_COOKIE_AGE = INACTIVE_TIME   # change expired session
 SESSION_IDLE_TIMEOUT = INACTIVE_TIME  # logout
 SESSION_TIMEOUT_REDIRECT = '/logout/'
 SESSION_SAVE_EVERY_REQUEST = True

这些是我的python和django版本: Python 2.7.9 django.VERSION(1,11,4,u'final',0)

有人可以指出以上代码中仍然缺少的内容吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。