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. DBA眼中的CLR

    SQL Server 2005引入CLR之後,開發者們熱情地接受了它. CLR作爲一個強有力的工具,開發者可在數據庫中利用它調用其它面嚮對象語言編寫而成的功能. 從DBA的視角來看,CLR的引入淡化了 ...

  2. 转 SqlServer中如何实现自动备份数据!

    第1种方法: 企业管理器  --管理  --右键数据库维护计划  --新建维护计划  --<下一步>  --选择你要备份的数据库  --<下一步>直到"指定数据库备份 ...

  3. JDBC-DAO经典模式 实现对数据库的增、删、改、查

    JDBC(Java Data Base Connection)的作用是连接数据库 先看下jdbc连接SQLServer数据库的简单例子 代码实现(FirstJDBC): package com.jdb ...

  4. ACE-Streams架构简介及应用

    一概述 Streams框架是管道和过滤构架模式的一种实现,主要应用于处理数据流的系统.其实现以Task框架为基础.Task框架有两个特性非常适用于Streams框架:一是Task框架可用于创建独立线程 ...

  5. Linux命令-目录处理命令:rm

    rm grub.conf 删除当前目录中grub.conf文件 (最好是先复制一个文件,然后再删除,这样保险) rm -f grub.conf 强制删除当前目录中的grub.conf文件 (不需要确认 ...

  6. elipse快捷键大全 elipse快捷键详解

    1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了.这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xm ...

  7. JVM 参数详解

    1.使用$JAVA_HOME/bin/java  可看到所有参数说明 用法: java [-options] class [args...] (执行类) 或 java [-options] -jar ...

  8. uploadify onSelect

    uploadify onSelect [return false]停止选择 $("#fileEleId").uploadify({ 'width': _option.width, ...

  9. C复杂声明举例

    首先,一些国外的研究成果: 一个用英语解析复杂声明的网站:http://cdecl.org 图表说明复杂声明(英):http://c-faq.com/decl/spiral.anderson.html ...

  10. 输入LPCWSTR类型字符串

    LPCWSTR tmp = L"xxx"; char*转到LPCWSTR LPCSTR(charTmp)