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