zoukankan      html  css  js  c++  java
  • python---cookie模拟登陆和模拟session原理

    cookie模拟登陆:

    import tornado.web
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            #self.write("Hello world")
            # 展示所有的cookie
            # print(self.cookies)
            # print(self.get_cookie('k1'))
            # self.set_cookie('k1','999')#还有 过期时间 适用路径
            # self.render("index.html")
            if self.get_argument('u',None) in ['asd','zxc']:
                self.set_secure_cookie('user',self.get_argument('u'))
            else:
                self.write('请登录')
    
    class ManagerHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            #默认self.get_secure_cookie('user',None)获取的数据是bytes类型
            if str(self.get_secure_cookie('user',None),encoding="utf8") in ['asd','zxc']:
                self.write("欢迎登录:"+str(self.get_secure_cookie('user'),encoding="utf8"))
            else:
                self.redirect('/index')
    
    settings ={
        'template_path':'views',
        'static_path':'statics',
        'cookie_secret':'dafawafawfaw',
    }
    
    application = tornado.web.Application([
        (r"/index",IndexHandler),
        (r"/manager",ManagerHandler),
    ],**settings)
    
    
    if __name__=="__main__":
        application.listen(8080)
        tornado.ioloop.IOLoop.instance().start()
    View Code

    session原理模拟(放在内存),更多是放在Redis,文件,数据库中

    import tornado.web
    
    #放在内存 redis  文件  数据库
    container={}
    
    class IndexHandler(tornado.web.RequestHandler):
        def get(self):
            if self.get_argument('u',None) in ['asd','zxc']:
                import hashlib
                import time
                obj = hashlib.md5()
                obj.update(bytes(str(time.time()),encoding="utf8"))
                random_str = obj.hexdigest()
                #这一段随机字符串需要传入到客户端cookie中,以便用户到服务端对应
                container[random_str]={}
                container[random_str]['k1']=123
                container[random_str]['k2']=self.get_argument('u')+"parents"
                container[random_str]['is_login']=True
    
                self.set_cookie('py_session',random_str)
            else:
                self.write("请登录")
    
    class ManagerHandler(tornado.web.RequestHandler):
        def get(self, *args, **kwargs):
            random_str = self.get_cookie('py_session', None)
            if random_str:
                if container.get(random_str,None):
                    if container[random_str]['is_login']:  # 或者container.get(random_str,None)
                        self.write("欢迎登录" + container[random_str]['k2'])
                        return;
            self.redirect("/index")
    
    
    settings ={
        'template_path':'views',
        'static_path':'statics',
        'cookie_secret':'dafawafawfaw',
    }
    
    application = tornado.web.Application([
        (r"/index",IndexHandler),
        (r"/manager",ManagerHandler),
    ],**settings)
    
    
    if __name__=="__main__":
        application.listen(8080)
        tornado.ioloop.IOLoop.instance().start()
    View Code
  • 相关阅读:
    Saltstack module gem 详解
    Saltstack module freezer 详解
    Saltstack module firewalld 详解
    Saltstack module file 详解
    Saltstack module event 详解
    Saltstack module etcd 详解
    Saltstack module environ 详解
    Saltstack module drbd 详解
    Saltstack module dnsutil 详解
    获取主页_剥离百度
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8527145.html
Copyright © 2011-2022 走看看