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

实现效果:浏览器第一次访问提交用户名,后台验证通过,生成随机字符串,和用户名组成字典,保存到服务器,把随机字符串设置成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. 每天学点SpringCloud(九):SpringCloud最常用配置详解

    Eureka 属性名 说明 默认值 eureka.server.enable-self-preservation 关闭注册中心的保护机制,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触 ...

  2. 基于kNN的手写字体识别——《机器学习实战》笔记

    看完一节<机器学习实战>,算是踏入ML的大门了吧!这里就详细讲一下一个demo:使用kNN算法实现手写字体的简单识别 kNN 先简单介绍一下kNN,就是所谓的K-近邻算法: [作用原理]: ...

  3. Node.js(day2)

    一.使用Node实现基本Apache的功能 在上一篇笔记中,我们提到如果打开一个文件需要进行一次url判断是繁琐的,我们希望我们的Node具有类似Apache这种web服务器的一个功能:将文件放到ww ...

  4. ubuntu 16.04 下安装动态链接库方法

    一般先使用ldd 来查看该应用程序缺少什么东西,然后,再根据sudo apt install XXX 去安装相应的动态库. 假如没有对应的库,可以使用: sudo ln -s /usr/lib/lib ...

  5. .Net Core新建解决方案,添加项目引用,使用VSCode调试

    并不是我自己琢磨的,是看了别人学习的,因为写的都不完整,所以就整理一下记录后面忘了回看. 反正.Net Core是跨平台的,就不说在什么系统上了.假设我要建一个名为Doggie的解决方案,里面包含了一 ...

  6. ThinkPHP 5隐藏public/index.php方法

    1.复制public下的index.php与.htaccess文件至根目录: 2.直接修改index.php,将内容修改为:<?php require 'public/index.php'; ? ...

  7. C# 多线程锁之ReaderWriterLockSlim

    1.简介 .NET 3.5 开始 ReaderWriterLockSlim登上舞台,ReaderWriterLockSlim 可以看做是 ReaderWriterLock 的升级版. 由于 Reade ...

  8. NLog 自定义Target

    http://nlog-project.org/2015/06/30/extending-nlog-is-easy.html 新建一个类库,命名规则为NLog.*.dll 定义一个类输出日志到Rabb ...

  9. CDlinux系统破解无线wifi

    CDlinux是破解无线wifi信号的很好用的系统.它就像一个PE,不过它是基于Linux内核的微型系统.里面的破解工具很齐全,既有传统的抓包工具,也有最新的PIN码破解软件,而且针对windows用 ...

  10. npm无响应处理办法

    方法一:使用cnpm 1. 安装 `npm install cnpm -g` 2.设置使用淘宝镜像源 `npm install cnpm -g --registry=https://registry. ...