Tornado框架-cookie

Cookie 是网站用来在客户端保存识别用户的一种小文件。一般来用库可以保存用户登 录信息、购物数据信息等一系列微小信息。

self.set_cookie()方法,创建cookie必写参数,cookie名称和cookie值,后面有可选参数
self.get_cookie()方法,获取指定cookie值,必写参数要获取的cookie名称

模板引擎

#!/usr/bin/env python
#coding:utf-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件
import uimodule #逻辑处理 class indexHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
if self.get_cookie("admin") == "admin": #判断cookie值等于admin
self.render("index.html") #显示index.html文件
else:
self.redirect("/dlu") #否则跳转到登录 class dluHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
self.render("dlu.html",shib="") #显示dlu.html文件
def post(self, *args, **kwargs): #处理post请求
yhm = self.get_argument('yhm') #接收用户名
mim = self.get_argument('mim') #接收密码
if yhm =="admin" and mim =="admin": #判断用户名和密码
self.set_cookie(yhm,mim,expires_days=2) #创建cookie
self.redirect("/index") #跳转用户查看页面
else:
self.render("dlu.html", shib="用户名或密码不正确") #如果用户名和密码不正确,打开登录页面 class tuichuHandler(tornado.web.RequestHandler):
def get(self): #处理get方法请求
self.set_cookie("admin","",expires=0) #修改cookie值
self.redirect("/index") #跳转页面 settings = { #html文件归类配置,设置一个字典
"template_path":"template", #键为template_path固定的,值为要存放HTML的文件夹名称
"static_path":"static", #键为static_path固定的,值为要存放js和css的文件夹名称
} #路由映射
application = tornado.web.Application([ #创建一个变量等于tornado.web下的Application方法
(r"/index", indexHandler), #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
(r"/dlu", dluHandler),
(r"/tuichu", tuichuHandler),
],**settings) #将html文件归类配置字典,写在路由映射的第二个参数里 if __name__ == "__main__":
#内部socket运行起来
application.listen(8888) #设置端口
tornado.ioloop.IOLoop.instance().start()

内容html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href='{{static_url("s1.css")}}'>
</head>
<body>
<h1>登录成功后才能看到</h1><a href="/tuichu">退出</a>
</body>
</html>

登录html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" action="/dlu">
用户名:<input type="text" name="yhm"/>
密码:<input type="text" name="mim"/>
<input type="submit" value="提交"/>
<span style="color: #ee1215">{{shib}}</span>
</form>
</body>
</html>

self.set_cookie()方法,创建cookie参数详情
  1、cookie名称
  2、cookie值
  3、domain : 'www.jxiou.com', 设置域名,设置域名后,cookie在指定域名下有效
  4、expires:过期时间的时间戳
  5、expires_days:过期时间天
  6、path:'/', 设置cookie有效路径,/表示全局目录有效

销毁cookie

将过期时间expires设置成系统当前时间戳减一,也就是过去了的时间,就会自动销毁cookie

#!/usr/bin/env python
#coding:utf-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件
import uimodule
import time #逻辑处理 class indexHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
if self.get_cookie("admin") == "admin": #判断cookie值等于admin
self.render("index.html") #显示index.html文件
else:
self.redirect("/dlu") #否则跳转到登录 class dluHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
self.render("dlu.html",shib="") #显示dlu.html文件
def post(self, *args, **kwargs): #处理post请求
yhm = self.get_argument('yhm') #接收用户名
mim = self.get_argument('mim') #接收密码
if yhm =="admin" and mim =="admin": #判断用户名和密码
self.set_cookie(yhm,mim,expires_days=2) #创建cookie
self.redirect("/index") #跳转用户查看页面
else:
self.render("dlu.html", shib="用户名或密码不正确") #如果用户名和密码不正确,打开登录页面 class tuichuHandler(tornado.web.RequestHandler):
def get(self): #处理get方法请求
self.set_cookie("admin","",expires=time.time()-1) #将过期时间设置成当前时间戳减1,成过去时间,销毁cookie
self.redirect("/index") #跳转页面
print() settings = { #html文件归类配置,设置一个字典
"template_path":"template", #键为template_path固定的,值为要存放HTML的文件夹名称
"static_path":"static", #键为static_path固定的,值为要存放js和css的文件夹名称
} #路由映射
application = tornado.web.Application([ #创建一个变量等于tornado.web下的Application方法
(r"/index", indexHandler), #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
(r"/dlu", dluHandler),
(r"/tuichu", tuichuHandler),
],**settings) #将html文件归类配置字典,写在路由映射的第二个参数里 if __name__ == "__main__":
#内部socket运行起来
application.listen(8888) #设置端口
tornado.ioloop.IOLoop.instance().start()

self.set_secure_cookie()方法,创建加密cookie,参数为cookie名称和cookie值
self.get_secure_cookie()方法,读取加密cookie,参数为要读取加密cookie的名称

注意,self.get_secure_cookie()读取到的cookie值是字节类型需要decode()转换成字符串
注意,使用self.set_secure_cookie()加密cookie,必须在配置字典里写cookie_secret:密匙
cookie_secret:密匙,加密会根据这个密匙提高加密级别

注意:此加密采用base64加密

#!/usr/bin/env python
#coding:utf-8 import tornado.ioloop
import tornado.web #导入tornado模块下的web文件
import uimodule
import time #逻辑处理 class indexHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
if self.get_secure_cookie("admin"):
ckk = self.get_secure_cookie("admin")
cke = ckk.decode()
if cke == "admin": #判断cookie值等于admin
self.render("index.html") #显示index.html文件
else:
self.redirect("/dlu")
else:
self.redirect("/dlu") #否则跳转到登录 class dluHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类
def get(self): #get()方法,接收get方式请求
self.render("dlu.html",shib="") #显示dlu.html文件
def post(self, *args, **kwargs): #处理post请求
yhm = self.get_argument('yhm') #接收用户名
mim = self.get_argument('mim') #接收密码
if yhm =="admin" and mim =="admin": #判断用户名和密码
self.set_secure_cookie(yhm,mim)
self.redirect("/index") #跳转用户查看页面
else:
self.render("dlu.html", shib="用户名或密码不正确") #如果用户名和密码不正确,打开登录页面 class tuichuHandler(tornado.web.RequestHandler):
def get(self): #处理get方法请求
self.set_secure_cookie("admin","",expires=time.time()-1) #将过期时间设置成当前时间戳减1,成过去时间,销毁cookie
self.redirect("/index") #跳转页面 settings = { #html文件归类配置,设置一个字典
"template_path":"template", #键为template_path固定的,值为要存放HTML的文件夹名称
"static_path":"static", #键为static_path固定的,值为要存放js和css的文件夹名称
"cookie_secret":"61oETzKXQAGaYdkL5gEmGeJJFuY",
} #路由映射
application = tornado.web.Application([ #创建一个变量等于tornado.web下的Application方法
(r"/index", indexHandler), #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法
(r"/dlu", dluHandler),
(r"/tuichu", tuichuHandler),
],**settings) #将html文件归类配置字典,写在路由映射的第二个参数里 if __name__ == "__main__":
#内部socket运行起来
application.listen(8888) #设置端口
tornado.ioloop.IOLoop.instance().start()

第二百六十二节,Tornado框架-cookie的更多相关文章

  1. 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查

    第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作.增.删.改.查 elasticsearch(搜索引擎)基本的索引 ...

  2. 第二百六十九节,Tornado框架-Session登录判断

    Tornado框架-Session登录判断 Session需要结合cookie来实现 Session的理解 1.用户登录系统时,服务器端获取系统当前时间,进行nd5加密,得到加密后的密串 2.将密串作 ...

  3. 第二百六十八节,Tornado框架-路由映射之二级域名支持,html模板继承以及导入

    Tornado框架-路由映射之二级域名支持,html模板继承以及导入 二级域名路由映射add_handlers()设置二级域名路由映射 注意:二级域名需要结合服务器ip绑定域名 框架引擎 #!/usr ...

  4. 第二百六十七节,Tornado框架-分页封装模块

    Tornado框架-分页封装模块 框架引擎 #!/usr/bin/env python #coding:utf-8 import tornado.ioloop import tornado.web # ...

  5. 第二百六十六节,Tornado框架-XSS处理,页码计算,页码显示

    Tornado框架-XSS处理,页码计算,页码显示 Tornado框架-XSS攻击过滤 注意:Tornado框架的模板语言,读取数据已经自动处理了XSS攻击,过滤转换了危险字符 如果要使危险字符可以远 ...

  6. 第二百六十四节,Tornado框架-基于正则的动态路由映射分页数据获取计算

    Tornado框架-基于正则的动态路由映射分页数据获取计算 分页基本显示数据 第一步.设置正则路由映射配置,(r"/index/(?P<page>\d*)", inde ...

  7. 第二百六十三节,Tornado框架-基于正则的动态路由映射

    Tornado框架-基于正则的动态路由映射 1.在路由映射条件里用正则匹配访问路径后缀2.给每一个正则匹配规则(?P<设置名称>)设置一个名称,3.在逻辑处理的get()方法或post() ...

  8. 第二百六十一节,Tornado框架模板引擎本质

    Tornado框架模板引擎本质 只需要了解一下即可 本篇就来详细的剖析模板处理的整个过程. 上图是返回给用户一个html文件的整个流程,较之前的Demo多了绿色流线的步骤,其实就是把[self.wri ...

  9. 第二百六十节,Tornado框架-内置模板方法

    Tornado框架-内置模板方法 直接在html文件使用,不需要传值 Tornado默认提供的这些功能其实本质上就是 UIMethod 和 UIModule,也就是Tornado框架定义好的html文 ...

随机推荐

  1. HTML charset 网页编码设定

    一:HTML4 <metahttp-equiv="content-type"content="text/html; charset=UTF-8" /> ...

  2. VMware Workstation的网络连接方式:NAT、桥接和Host Only

    安装完VMware Workstation后会自动生成两个网络连接:VMware Network Adapter VMnet8 和 VMware Network Adapter VMnet1(通常称为 ...

  3. socket shutdown 与 close 函数 的区别

    假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据 ...

  4. MSS & MTU

  5. iOS动画进阶 - 实现炫酷的上拉刷新动效

    移动端訪问不佳,请訪问我的个人博客 近期撸了一个上拉刷新的小轮子.仅仅要遵循一个协议就能自己定义自己动效的上拉刷新和载入,我自己也写了几个动效进去,以下是一个比較好的动效的实现过程 先上效果图和git ...

  6. 机器学习数学基础- gradient descent算法(上)

    为什么要了解点数学基础 学习大数据分布式计算时多少会涉及到机器学习的算法,所以理解一些机器学习基础,有助于理解大数据分布式计算系统(比如spark)的设计.机器学习中一个常见的就是gradient d ...

  7. Linux下挂载硬盘分区的几种方法

    1.使用Autofs自动挂载分区 2.修改/etc/fstab 3.编写shell脚本,开机自动运行mount命令  方法一.使用Autofs  1.Autofs的特点:Autofs与Mount/Um ...

  8. 去掉A标签的虚线框

    outline是css3的一个属性,用的很少. 声明,这是个不能兼容的css属性,在ie6.ie7.遨游浏览器都不兼容. outline控制的到底是什么呢? 当聚焦a标签的时候,在a标签的区域周围会有 ...

  9. vue组件调用(全局调用和局部调用)

    当用vue-cli创建一个项目后, 创建项目的方法: https://www.cnblogs.com/fps2tao/p/9376847.html 编写了组件怎么,在其他组件中调用了? 组件listB ...

  10. 【Android】15.5 例15-3—Notification的各种属性演示

    分类:C#.Android.VS2015: 创建日期:2016-02-29 一.简介 利用这个例子,可测试通知的各种属性以及这些不同属性选项呈现的效果. 另外,在这个例子中,还演示了如何读写SD中的图 ...