python客户端修改session_python_way ,自定义session

container = {} #可以是数据库,可以是缓存也可以是文件

classSession:def __init__(self, handler): #handler就是之前传递过来的handler方法,所以它也会有setcookie方法。

#self.r_str 当前用户的cookie

self.handler =handler

self.r_str= handler.get_cookie("__session_id__") #获取客户端的cookie

if self.r_str: #如果获取到cookie

if self.r_str in container: #检查这个cookie是否存在在container中

#如果客户端访问的md5在我的列表中证明是真的

print("有cookie")

self.r_str=self.r_strprint(self.r_str)#设置一个字段,以备以后调用

else:#否则就是假的

self.cookie = client_publish.md5_str() #先生成一个变化的cookie

handler.set_cookie("__session_id__",self.cookie) #设置一个新的cookie

print("假的cookie")

container[self.cookie]= {} #把这个cookie放在字典中

self.r_str = self.cookie #同样因为是新生成的cookie,还是设置一个字段,以备后患

else:print("没有cookie")

self.cookie=client_publish.md5_str()

self.r_str=self.cookie

container[self.r_str]= {} #如果没有设置cookie,第一次访问

handler.set_cookie("__session_id__", self.r_str, expires=time.time() + 20) #设置cookie并且设置超时时间,每次用户访问都设置一下

defset_session(self, key, value):print(container)

container[self.r_str][key]= value #设置session 这样可以保存很多key和value

print(container)defget_session(self):

user_session= self.handler.get_cookie("__session_id__", None)if user_session incontainer:try:if container[user_session]["is_login"]:returnTrueexceptException as e:print(e,"not value")returnFalseclassMyRequestHandler(tornado.web.RequestHandler):definitialize(self):#在RequestHandler中有set_cookie方法

self.key = Session(self) #我们把self传递给Session 自定义的这个类中

classHomeHadler(MyRequestHandler):defget(self):#self.set_cookie() 因为这里继承了MyRequestHandler,所以在这里也有set cookie方法

session =Session(self)

user_login=session.get_session()ifuser_login:

self.redirect("/index") #跳转到这个用户已经登陆

else:

self.render("login.html") #如果这个用户没有登陆,则进入登陆页面

defpost(self):

user= self.get_argument("user")

pwd= self.get_argument("pass")print(user, pwd)if user == "hanxu" and pwd =="123": #从数据库中查找出来的用户名密码

session=Session(self)

session.set_session("is_login", True)

session.set_session("user", user)

self.redirect("/index")class HostHadler2(MyRequestHandler): #这种方式的话就可以方便统一使用,统一修改了

defget(self):

session=Session(self)

user_session=session.get_session()ifuser_session:

self.write("主页")else:                 #如果没有登陆,就调回登陆页面

self.redirect("/home")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值