session2
每一个新用户登陆成功以后会生成一个新的字符串,注意只要登陆,get方法里面的内容就会执行一遍。
import hashlib
import time
obj=hashlib.md5()
obj.update(bytes(str(time.time(),encoding='utf-8')))
random_str=obj.hexdigest()
container[random_str]={}
container[random_str]['k1']=123
container[random_str]['k2']=self.get_argument('u',None)+"parents"
container[random_str]['is_login']=True
self.set_cookie('iiii',random_str)
去container里边去拿它对应的小字典。小字典想定义什么就定义什么。别人来了拿不到它
将代码归类:
class Session:
def __init__(self):
def set_value(self):
#在container中加入随机字符串
#定义专属于自己的数据
根据随机字符串找到大字典,再根据字典找到alex
def __generate_random_str(self):
import hashlib
import time
obj=hashlib.md5()
obj.update(bytes(str(time.time()),encoding='utf-8'))
random_str=obj.hexdigest()
return random_str
def set_value(self):
#在客户端中写入随机字符串
random_str=self.__generate_random_str()
container[random_str]={}
//这就是定义自己的专属的字典,上边是空间创建了,但是数据内容还没有,希望这个数据内容是我们自己定义的。
在set_value的时候能不能传什么,里面就写什么。
def set_value(self,key,value)
所以此时就在上边再添加一句:
container[random_str][key]=value
//之后把这个随机字符串写到客户端。
之前往客户端写的时候,写的是:
self.set_cookie('iiiiiiii',random_str),注意这个self是IndexHandler。
所以可以在init方法里边传入一个handler,然后再写上:
self.handler=handler
用户只需要在IndexHandler里边写上:
def get(self):
Session(self)
则这个handler就具有了set_cookie方法。
在container里边加入一个key,这个key对应一个专属的字典就可以了。
self.handler.set_cookie("__kakaka__",random_str)
用户一执行这个句子,就相当于是在浏览器端写了一个cookie
get_value(self,key):获取客户端的随机字符串。
random_str=self.handler.get_cookie("__kakaka__")
#然后根据这个随机字符串从container里边去取数据。
user_info_dict=container[random_str]
value=user_info_dict[key]
return value
现在开始写IndexHandler,里边有个get方法():
if(self.get_argument('u',None) in ['alex','eric'])
s=Session(self)
s.set_value('is_login',True)

对于后台管理页面只有登陆成功才能访问
在class ManagerHandler(tornado.web.RequestHandler):
def get(self):
s=Session(self)
val=s.get_value('is_login')
if val:
self.write('成功')
else:
self.write('失败')


浙公网安备 33010602011771号