python session過期timeout處理
阿新 • • 發佈:2018-12-31
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