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('失败')

 

  

posted @ 2017-04-03 16:26  关泉珍  阅读(103)  评论(0)    收藏  举报