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

实现效果:浏览器第一次访问提交用户名,后台验证通过,生成随机字符串,和用户名组成字典,保存到服务器,把随机字符串设置成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('')
tornado.ioloop.IOLoop.instance().start()

向后台提交数据:利用cookie加session提交更多数据,的更多相关文章

  1. 分布式系统登录功能拦截器的实现以及cookie的共享问题(利用cookie实现session在分布式系统的共享)

    当我们的网站采用分布式部署系统时,每个子系统拥有自己独立的session,如果不实现session共享,当用户切换系统访问的时候,会不停的提示登录,这对于用户体验是非常不好的.因此对于多个子系统的的访 ...

  2. 会话过程保存数据对象cookie和session

    1 cookie是以键值对保存在浏览器端,服务器端可以创建.接收.发送 cookie 信息. request可以接收 cookie, response 可以发送 cookie. 1)cookie 可以 ...

  3. php利用cookie防止重复提交解决办法

    原理:如果数据通过了上边的两次验证,说明数据是合法有效的数据,这时候我们把提交的数据串接为一个字符串,并用MD5加密后得到一个MD5的值. 接着我们把这个值通过Cookie放进客户端,当用户下一次提交 ...

  4. Python使用Flask框架,结合Highchart,搭配数据功能模块,加载 HTML 表格数据

    参考链接:https://www.highcharts.com.cn/docs/data-modules 1.javascript代码 var chart = Highcharts.chart('co ...

  5. 在pycharm中批量插入表数据、分页原理、cookie和session介绍、django操作cookie

    昨日内容回顾 ajax发送json格式数据 ''' 1. urlencoded 2. form-data 3. json ''' 1. ajax $.ajax({ data: JSON.stringi ...

  6. cookie、session和中间件

    目录 cookie和session cookie与session原理 cookie Google浏览器查看cookie Django操作cookie 获取cookie 设置cookie 删除cooki ...

  7. cookie和session的那些事

    对于经常网购的朋友来说,经常会遇到一种情况: 打开淘宝或京东商城的首页,输入个人账号和密码进行登陆,然后进行购物,支付等操作都不需要用户再次输入用户名和密码 但是如果用户换一个浏览器或者等几个小时后再 ...

  8. 第74节:Java中的Cookie和Session

    第74节:第74节:Java中的Cookie和Session ServletContext: 什么是ServletContext,有什么用哦,怎么用呢? 启动服务器后,会给每个应用程序创建一个Serv ...

  9. Cookie 与 Session 的区别

    Cookie与Session的区别 cookie的简介 cookie是Web服务器保存在客户端的一系列文本信息 cookie的作用 对特定对象的追踪 统计网页浏览次数 简化登录 安全性能:容易信息泄露 ...

随机推荐

  1. LeetCode题解33.Search in Rotated Sorted Array

    33. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some piv ...

  2. 全栈开发工程师微信小程序-中(中)

    全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...

  3. 第34节:Java当中的异常

    Java当中的异常 了解Java当中的异常,那么什么是异常呢?异常又有什么分类呢?异常中的特殊结构:try...catch...finally 结构的使用方法. 异常是一种对象,是靠虚拟机产生的,异常 ...

  4. Spark基础-scala学习(二、面向对象)

    面向对象编程之类 //定义一个简单的类 scala> :paste // Entering paste mode (ctrl-D to finish) //类默认public的 class He ...

  5. linux 下zip的用法实例

    zip命令可以用来将文件压缩成为常用的zip格式.unzip命令则用来解压缩zip文件. 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip: # zip -r yasuo ...

  6. 安卓之必须了解的实时通信(Socket)

    Socket: 有服务器和客户端之分,其是对TCP/IP的封装,使用IP地址加端口,确定一个唯一的点.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket ...

  7. 神奇的CSS3混合模式

    神奇的css3混合模式 对于前端开发人员应该都很熟悉Photoshop的图层混合模式,就是几个图层按不同的模式进行混合,实现不同的图像效果.但是当我们前端同学在切这些效果图的时候,基本上就是一刀切的, ...

  8. IT老人,给后辈的十一点建议

    我已经在IT业打拼9年了,从完全自学成为技术团队leader到PM也确实总结了不少的经验,自己也经常跟学弟学妹聊天,分享职场经验,当老家有人报考计算机或者从事相关工作时也会咨询我的意见,我很明白IT人 ...

  9. 关于 Kubernetes 中的 Volume 与 GlusterFS 分布式存储

    容器中持久化的文件生命周期是短暂的,如果容器中程序崩溃宕机,kubelet 就会重新启动,容器中的文件将会丢失,所以对于有状态的应用容器中持久化存储是至关重要的一个环节:另外很多时候一个 Pod 中可 ...

  10. DotNetCore深入了解之二HttpContext类

    当KestrelServer启动时,会绑定相应的IP地址,同时在绑定时将加入HttpConnectionMiddleware作为终端连接的中间件. public async Task StartAsy ...