第二百六十二节,tornado框架-cookie

林贵秀 林贵秀     2022-08-31     299

关键词:

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","0",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","0",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","0",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框架-分页封装模块

Tornado框架-分页封装模块框架引擎#!/usr/bin/envpython#coding:utf-8importtornado.ioloopimporttornado.web#导入tornado模块下的web文件fromcontrollersimportindexsettings={#html文件归类配置,设置一个字典"template_path":"views",#键为template_p 查看详情

第二百六十三也,tornado框架-基于正则的动态路由映射分页

Tornado框架-基于正则的动态路由映射分页分页基本显示数据第一步、设置正则路由映射配置,(r"/index/(?P<page>d*)",index.indexHandler),正则匹配访问路径,访问录index/后面可以是可以是0个或多个数字第二步、配置逻辑处理方法,get(... 查看详情

第二百六十五节,xss脚本攻击介绍

xss脚本攻击介绍 Cross-SiteScripting(XSS)是一类出现在web应用程序上的安全弱点,攻击者可以通过XSS插入一些代码,使得访问页面的其他用户都可以看到,XSS通常是可以被看作漏洞的。它允许攻击者绕过安全机制,通过尝试各... 查看详情

人生的诗·265~269节

第二百六十五节 无题人世兜转百千回,深锁心门一院秋。待得春来柳绿时,万紫嫣红醉酡颜。第二百六十六节 摇曳摇曳着 摇曳着 盛开在回首的路那花儿是七彩的雪 零落的虹等待你骑马的影 踏破闺人的梦... 查看详情

第二百七十节,tornado框架-生成验证码图片,以及验证码结合session验证

Tornado框架-生成验证码图片,以及验证码结合Session验证 第一、生成验证码图片 生成验证码图片需要两个必须模块  1、python自带的random(随机模块)  2、Pillow()图像处理模块里的PIL(图像库),为第三方模块,需要安装&nbs... 查看详情

第二百七十一节,tornado框架-csrf防止跨站post请求伪造

Tornado框架-CSRF防止跨站post请求伪造CSRF是什么CSRF是用来在post请求时做请求验证的,防止跨站post请求伪造当用户访问一个表单页面时,会自动在表单添加一个隐藏的input标签,name="_xsrf",value="等于一个密串"当用户post请求提交数... 查看详情

一起talkandroid吧(第四百六十二回:对drawable中获取到的bitmap进行缩放)(代码片段)

文章目录使用背景使用方法示例代码各位看官们大家好,上一回中咱们说的例子是"再谈从drawable中获取Bitmap",这一回中咱们说的例子是"对drawable中获取到的Bitmap进行缩放"。闲话休提,言归正转,让我们一... 查看详情

第二十二节——反射(代码片段)

类加载器一、类加载器ClassLoader中的两个方法staticClassLoadergetSystemClassLoader():返回用于委派的系统类加载器ClassLoadergetParent():返回父类加载器进行委派例子publicclassClassLoaderDemo publicstaticvoidmain(String[]args) //sta 查看详情

第二十二节,三元运算

...变量条件成立,就将第一个值赋给变量,条件不成立就将第二个值赋给变量就是一个条件判断,和两个不同的值组合成的判断运算,就是三元运算#!/usr/bin/envpython#-*-coding:utf-8-*-#三元运算#三元运算,就是if条件判断,前后各有一个... 查看详情

easyclickhtmlui第二十二节jquery事件代理(代码片段)

EasyClickHtmlUI第二十二节jQuery事件代理事件代理介绍事件代理就是利用事件冒泡的原理(事件冒泡就是事件会向它的父级一级一级传递),把事件加到父级上,通过判断事件来源,执行相应的子元素的操作,事件代理首先可... 查看详情

scala入门到精通——第二十二节高级类型

作者:摇摆少年梦视频地址:http://www.xuetuwuyou.com/course/12本节主要内容this.type使用类型投影结构类型复合类型1.this.type使用classPerson{privatevarname:String=nullprivatevarage:Int=0defsetName(name:String)={this.name=name//返回对象本身this}d 查看详情

学习笔记第二十二节课

shell介绍shell是一个命令解释器,提供用户和机器之间的交互。用户配置的最后一个段就是shell创建的普通的用户它的shell是binbash每个用户都可以有自己的shellsentos7的shell是bash除此之外还有zshksh,用起来和bash很像,但是有细节上... 查看详情

《pyinstaller打包实战指南》第二十二节单文件模式打包playwright(代码片段)

第二十二节单文件模式打包Playwright打包时解决掉的问题:ImportError:DLLloadfailedwhileimporting_greenlet:动态链接库(DLL)初始化例程失败。Executabledoesn\'texistat C:\\Users\\user\\Desktop\\la_vie\\dist\\belle\\playwright\\driver\\pac 查看详情

人生的诗·270~274节

第二百七十节 等待等待着与你一日的欢聚诉说无言的相思那相思滴落在你的滚烫的眼泪里爱情的花开了花开在心里我开始等待结果的季节了第二百七十一节 苦味那滋味静静地跌落在人世的尘土里就像是折翼的雀从天空陨... 查看详情

三百六十度全景图如何拍摄?

三百六十度全景图如何拍摄?随着全景技术的发展,全景拍摄也成为了一种十分新潮的摄影方式。全景摄影也有很多学问,而且随着全景照片的用途越来越多,拍摄全景的设备也越来越多。今天我们就介绍几种十分另类的360全景... 查看详情

第二十二节,tensorflow中rnn实现一些其它知识补充(代码片段)

一初始化RNN上一节中介绍了 通过cell类构建RNN的函数,其中有一个参数initial_state,即cell初始状态参数,TensorFlow中封装了对其初始化的方法。1.初始化为0对于正向或反向,第一个cell传入时没有之前的序列输出值,所以需要对... 查看详情

第二十二节,tensorflow中的图片分类模型库slim的使用(代码片段)

Google在TensorFlow1.0,之后推出了一个叫slim的库,TF-slim是TensorFlow的一个新的轻量级的高级API接口。这个模块是在16年新推出的,其主要目的是来做所谓的“代码瘦身”。它类似我们在TensorFlow模块中所介绍的tf.contrib.lyers模块,将很... 查看详情

第二十二节-表格

table是块级元素,给tablewidth height,单元格会自动分配,不给tablewidth与height,单元格会根据内容分配,但还是会对齐table:thead表格头(th标题单元格),th里的字上下左右居中     tbody表身     tfoot... 查看详情