python session过期timeout处理

1、使用webpy自身带的session配置选项,具体如下:

web.config.session_parameters['cookie_name'] = 'webpy_session_id'
web.config.session_parameters['cookie_domain'] = None
web.config.session_parameters['timeout'] = 86400, #24 * 60 * 60, # 24 hours   in seconds
web.config.session_parameters['ignore_expiry'] = True
web.config.session_parameters['ignore_change_ip'] = True
web.config.session_parameters['secret_key'] = 'fLjUfxqXtfNoIldA0A0J'
web.config.session_parameters['expired_message'] = 'Session expired'

  • cookie_name - 保存session id的Cookie的名称
  • cookie_domain - 保存session id的Cookie的domain信息
  • timeout - session的有效时间 ,以秒为单位
  • ignore_expiry - 如果为True,session就永不过期
  • ignore_change_ip - 如果为False,就表明只有在访问该session的IP与创建该session的IP完全一致时,session才被允许访问。
  • secret_key - 密码种子,为session加密提供一个字符串种子
  • expired_message - session过期时显示的提示信息。
根据选项的解释。即当设置
'ignore_expiry'=True

则即使过期时间到,也不会提示客户端session过期,但是会在服务器端把之前的session删除,重新生成一个session;即此时等同于新来的请求,后面该登录的还要重新登录;否则如果该值为False,那么在session过期时间后【即timeout所设置的时间】,将会返回字符串

Session expired
给客户端,这样的体验定然是不好的,所以该用的时候还得用。http://webpy.org/cookbook/sessions.zh-cn官网帮助文档地址


2、使用自定义session类的方法来重写session过期后的返回操作,如重定向。

新建一个文件名称为session.py,其新建一个MySession类,并重写其expired方法。

import web
from web.session import Session
 
class MySessionExpired(web.HTTPError):
    def __init__(self, headers,message):
        web.HTTPError.__init__(self, '200 OK', headers, data=message)
 
class MySession(Session):
    def __init__(self, app, store, initializer=None):
        Session.__init__(self,app,store,initializer)
 
    def expired(self):
        self._killed = True
        self._save()
        message = self._config.expired_message
        headers = {'Content-Type': 'text/html','Refresh':'2;url="/account/login"'}
        raise MySessionExpired(headers, message)
如何使用:

import web
from session import MySession
 
web.config.session_parameters['cookie_name'] = 'myapp_sessid'
web.config.session_parameters['cookie_path'] = '/'
web.config.session_parameters['timeout'] = 120
web.config.session_parameters['ignore_expiry'] = False
web.config.session_parameters['ignore_change_ip'] = True
web.config.session_parameters['secret_key'] = 'Jp9kLsy7Fre5m2sNxz3RwAq'
web.config.session_parameters['expired_message'] = 'Session expired, will redirect...'
session = MySession(app, web.session.DiskStore('sessions'), {})

原文博客地址: http://space.wudiweb.com/phychion/blog/9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值