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'
'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