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

实现效果:浏览器第一次访问提交用户名,后台验证通过,生成随机字符串,和用户名组成字典,保存到服务器,把随机字符串设置成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. 吴恩达机器学习笔记27-样本和直观理解2(Examples and Intuitions II)

    二元逻辑运算符(BINARY LOGICAL OPERATORS)当输入特征为布尔值(0 或1)时,我们可以用一个单一的激活层可以作为二元逻辑运算符,为了表示不同的运算符,我们只需要选择不同的权重即可 ...

  2. Windows平台下kafka环境的搭建

    近期在搞kafka,在Windows环境搭建的过程中遇到一些问题,把具体的流程几下来防止后面忘了. 准备工作: 1.安装jdk环境 http://www.oracle.com/technetwork/ ...

  3. ubuntu16.04 下鼠标变成十字形状无法点击情况解决

    出现这种问题的原因是把shell命令行终端当成了python环境,误输入了"import"命令. (当然如果你真的希望在shell中输入import指令除外...) 我自己想当然的 ...

  4. java的四种内部类详解

    引言 内部类,嵌套在另一个类的里面,所以也称为:嵌套类; 内部类分为以下四种: 静态内部类 成员内部类 局部内部类 匿名内部类 一.静态内部类 静态内部类: 一般也称"静态嵌套类" ...

  5. [原创]K8Cscan插件之C段旁站扫描\子域名扫描

    [原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...

  6. pytorch bug

    ImportError: torch.utils.ffi is deprecated raise ImportError("torch.utils.ffi is deprecated. Pl ...

  7. Python编程Day3—基本运算符、数据类型

    一.基本运算符 1.算数运算 print(10/3) print(10//3) print(10%3) print(10**3) 2.比较运算 print(10==10) print(10!=10) ...

  8. Jenkins系列之四——设置邮件通知

    Jenkins持续集成,当我们自动打包部署完,我们可以发送一封邮件给相关的负责人.现介绍一下如何在Jenkins中配置实现邮件通知. 在Jenkins中配置实现邮件通知,Jenkins提供了两种方式的 ...

  9. Elasticsearch实践(一):基础入门

    本文以 Elasticsearch 6.2.4为例. 注:最新(截止到2018-09-23)的 Elasticsearch 是 6.4.1.5.x系列和6.x系列虽然有些区别,但基本用法是一样的. 官 ...

  10. 【web开发】docker中的数据库

    注:自从开始使用docker,部署方面的事情就简单多了.使用docker构建的数据库容器不用直接安装,开启后就可以使用,也比以前方便很多.下面将一些要点记录下来. 下面的例子使用以下环境: - 系统( ...