zoukankan      html  css  js  c++  java
  • 向后台提交数据:利用cookie加session提交更多数据,

    个人逻辑,可能考虑不全面,各位看到后留言,我修改啊

    实现效果:浏览器第一次访问提交用户名,后台验证通过,生成随机字符串,和用户名组成字典,保存到服务器,把随机字符串设置成cookie发给浏览器,同一个浏览器第二次来访问这个服务器上的其他页面时候,获取携带的cookie的随机字符串判断在字典,把用户信息前台展示否则跳到其他页面或提示浏览器cookie没设置

    代码如下:

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    import  tornado.web
    import tornado.ioloop
    dic = {}
    class LoginHandler(tornado.web.RequestHandler):
        # 如果前台提交的用户是对的,生成随机字符串,根据随机字符串构建空字典,让随机字符串做key,用户信息做新字典的信息。最后把随机字符串给cookie返回给浏览器
        # 如果用户不对,提示验证不通过
    
        def get(self, *args, **kwargs):
            if self.get_argument('u') in ['zhangsan','lisi']:
                #根据不同的时间利用md5生成不同的字符串
                import hashlib
                import time
                obj = hashlib.md5()
                obj.update(bytes(str(time.time()),encoding='utf-8'))
                random_str = obj.hexdigest()
                #根据随机字符串构建空字典,让随机字符串做key,用户信息做新字典的信息
                dic[random_str] = {}
                dic[random_str]['is_login'] = True
                dic[random_str]['user'] = self.get_argument('u')
                # print(dic)
                #随机字符串设置到浏览器里,供下载浏览器访问其他页面携带
                self.set_cookie('cookie',random_str)
    
            else:
                # 如果用户不对提示验证不通过
                self.write('验证不通过')
    
    class ManagerHandler(tornado.web.RequestHandler):
        # 获取浏览器携带的cookie的value,看携带的这个value即随机字符串是否在字典dic,要是在,并且is_login的value是True,前端显示用户名,否则跳到login页面
        def get(self, *args, **kwargs):
            # 获取浏览器携带的cookie的value
            cc = self.get_cookie('cookie')
            #看携带的这个value即随机字符串是否在字典dic,要是在,并且is_login的value是True,前端显示用户名,否则跳到login页面
            print(cc)
            new_random = dic.get(cc,None)
            print(new_random)
            if not new_random:
                self.redirect('/login')
            else:
               if new_random['is_login']:
                    self.write(new_random['user'])
               # else:
               #     self.redirect('/login')
    setting = {
    'cookie_secret':'eeee'
    }
    app = tornado.web.Application([(r'/login',LoginHandler),
                                    (r'/manager',ManagerHandler),
                             ],**setting)
    if __name__ == '__main__':
        app.listen('8000')
        tornado.ioloop.IOLoop.instance().start()
  • 相关阅读:
    878. 第 N 个神奇数字
    Leetcode 239. 滑动窗口最大值
    欢天喜地七仙女——Beta冲刺三
    欢天喜地七仙女——Beta冲刺二
    欢天喜地七仙女——Beta冲刺一
    欢天喜地七仙女——Beta冲刺凡事预则立
    欢天喜地七仙女——Beta冲刺代码规范与计划
    欢天喜地七仙女Alpha总结展望——前事不忘后事之师
    欢天喜地七仙女——Alpha测试随笔
    欢天喜地七仙女——Alpha冲刺总结
  • 原文地址:https://www.cnblogs.com/wenxianfeng/p/10386484.html
Copyright © 2011-2022 走看看