瓶/烧杯会话在浏览器关闭和使用寿命上到期

时间:2018-10-05 16:03:30

标签: python session wsgi beaker

我正在使用瓶子和烧杯通过python进行会话管理。我已经构建了WSGI Web服务,并按如下方式配置了烧杯会话:

    session_opts = {
      'session.type': 'memory',
   #  'session.cookie_expires': 43200,
      'session.auto': True,
      'session.secure': True,
      'session.timeout': 1800,
      'session.httponly': True,
      'session.validate_key': 'test',
      'session.cookie_expires' : True
    }
   app = beaker.middleware.SessionMiddleware(bottle.app(), session_opts)
   bottle.run(app=app)

我需要会话在浏览器关闭以及cookie的总寿命到期时结束。但是,它们都由session.cookie_expires控制。将其设置为True会在浏览器关闭时结束会话,将其设置为43200可延长其12小时的使用寿命。取消注释'session.cookie_expires':43200,将导致'session.cookie_expires':true被忽略。

我不确定如何使两者都起作用。这是此配置选项的文档栏:

  

cookie_expires(可选,布尔,日期时间,timedelta,int)       确定用于跟踪会话客户端的cookie何时到期。设置为布尔值时,   在浏览器会话结束时过期,或者永不过期。       将日期时间设置为强制会话的硬结束时间(通常用于将会话设置为较远的日期)。       设置为整数将导致cookie被设置为在这么多秒后过期。即值300将导致   Cookie被设置为在300秒后过期。       默认为永不过期。

我的决议: 我保留了'session.cookie_expires':True,并添加了以下代码来处理总寿命:

now = datetime.datetime.now().strftime('%s')
delta = int(now) - int(request.session['_creation_time'])
if(delta > 43200):
  request.session.delete()
  return redirect('/login')

0 个答案:

没有答案