1 Star 0 Fork 0

yq.fly/rewitter

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
session.py 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
yq.fly 提交于 2020-04-11 13:53 . 第一次提交
import settings
import pickle
import random
from bottle import request,response
r=settings.r
_randomSamples='zxcvbnmasdfghjklqwertyuiop1234567890'
_defaultSessionName='gsid'
_defaultTimeout=30*60
class Session (dict):
def __init__(self,request:request,response:response,name=_defaultSessionName,timeout=_defaultTimeout):
self.request= request
self.response=response
self._name=name
self._timeout=timeout
self._new =True
self._invalide=False
dict.__init__(self)
sid=request.cookies.get(self._name)
if sid:
self._sid=sid
sdata_bytes=r.get(self._sid)
if sdata_bytes:
self.update( pickle.loads(sdata_bytes))
r.set(self._sid,sdata_bytes)
r.expire(self._sid,self._timeout)
self._new=False
return
sid= ''.join([random.choice(_randomSamples) for i in range(8)])
self._sid=sid
self.response.set_cookie(self._name,self._sid,path='/')
def save(self):
if not self._invalide:
r.set(self._sid, pickle.dumps(self.copy()))
r.expire(self._sid,self._timeout)
def is_new(self):
return self._new
def invalited(self):
self.response.set_cookie(self._name,'',expire='-100')
r.delete(self._sid)
self.clear
self._invalide =True
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/yqfly/rewitter.git
git@gitee.com:yqfly/rewitter.git
yqfly
rewitter
rewitter
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385