博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
向后台提交数据:利用cookie加session提交更多数据,
阅读量:6005 次
发布时间:2019-06-20

本文共 2064 字,大约阅读时间需要 6 分钟。

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

 

 

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

代码如下:

#!/usr/bin/env python#-*- coding:utf-8 -*-import  tornado.webimport tornado.ioloopdic = {}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()

 

转载于:https://www.cnblogs.com/wenxianfeng/p/10386484.html

你可能感兴趣的文章
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
Centos6.5升级系统自带gcc4.4.7到gcc4.8.0
查看>>
redis安装与配置文件详解
查看>>
VMware安装失败 “Failed to create the requested registry key Key:installer Error:1021"
查看>>
虚拟化系列-VMware vSphere 5.1 VDP备份管理
查看>>
接口设计
查看>>
同步工具类 java.util.concurrent.CountDownLatch
查看>>
带动量因子的BP网络源码(C#实现)
查看>>
Skia深入分析9——延迟渲染和显示列表
查看>>
mmap函数实现共享内存
查看>>
java笔记
查看>>
贪吃蛇和俄罗斯方块软件
查看>>
消息队列服务器 memcacheq的搭建
查看>>
Bringing up interface eth0: Device eth0 does not seem to be present ,delayin
查看>>
解决输入ipconfig后出现ipconfig不是内部或外部命令
查看>>
跟我一起学docker(七)--网络
查看>>
跨交换机实现的vlan
查看>>
response.getWriter()的作用解决方法
查看>>
linux文件存取 inode解读
查看>>
android edittext不弹出软键盘
查看>>