Tornado-cookie
cookie
服务端在客户端的中写一个字符串,下一次客户端再访问时只要携带该字符串,就认为其是合法用户。
tornado中的cookie有两种,一种是未加密的,一种是加密的,并且可以配置生效域名、路径、过期时间。
文件目录

Python代码
import tornado.ioloop
import tornado.web
import time class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render('index.html', ) class ManagerHandler(tornado.web.RequestHandler):
def get(self):
cookie = self.get_cookie('auth')
if cookie == '':
self.render('manager.html')
else:
self.redirect('/login') class LoginHandler(tornado.web.RequestHandler):
def get(self):
self.render('login.html', status_text='') def post(self):
username = self.get_argument('username', None)
password = self.get_argument('password', None)
checked = self.get_argument('auto', None)
if username == 'abc' and password == '':
if checked:
self.set_cookie('usn', username, expires_days=7)
self.set_cookie('auth', expires_days=7)
else:
expire_time = time.time() + 60 * 30
# domain:针对哪个域名生效
# path:为cookie划分权限,在那一些目录下生效,默认是'/',全局生效
self.set_cookie('usn', username, expires_days=expire_time)
self.set_cookie('auth', '', expires=expire_time, path='/')
self.redirect('/manager')
else:
self.render('login.html', status_text='登陆失败') class LogoutHandler(tornado.web.RequestHandler):
def get(self):
self.set_cookie('auth', '', expires=time.time())
self.set_cookie('usn', '', expires=time.time())
self.redirect('/login') settings = {
"template_path": "views", # 配置html文件路径
"static_path": "static", # 配置静态文件路径
} # 路由映射
application = tornado.web.Application([
(r"/index", MainHandler),
(r"/login", LoginHandler),
(r"/manager", ManagerHandler),
(r"/logout", LogoutHandler) ], **settings) # 启动
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start() # session更灵活些
# set_secure_cookie有了加密,更安全
HTML页面
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>首页</h1>
</body>
</html>
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/login" method="post">
<input type="text" name="username"/>
<input type="text" name="password"/>
<input type="checkbox" name="auto" value="1" >7天免登陆
<input type="submit" value="登陆"/>
<span style="color:red;">{{ status_text }}</span>
</form>
</body>
</html>
manager.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1 style="color:red;">隐私页面</h1>
<h1>您的密码是123456</h1>
<h2>您的卡内余额是10000元</h2>
<a href="/logout">退出</a>
</body>
</html>
这一部分没有复杂的部分,主要涉及了tornado内cookie相关方法的应用以及设计跳转页面间的关系。
Tornado-cookie的更多相关文章
- tornado cookie安全性
1.cookie伪造客户端javascript或浏览器插件可以修改cookie网络传输中也可以截获请求,修改cookie 2.tornado cookie安全验证机制tornado的set_secur ...
- Tornado cookie 笔记
set_cookie()/get_cookie()的使用 def get(self): # self.get_cookie()获取cookie if not self.get_cookie('name ...
- tornado web 框架的认识
tornado 简介 1,概述 Tornado就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本.Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的 ...
- 浅析tornado web框架
tornado简介 1.tornado概述 Tornado就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本.Tornado 和现在的主流 Web 服务器框架(包括大多数 Py ...
- tornado web框架
tornado web框架 tornado简介 1.tornado概述 Tornado就是我们在 FriendFeed 的 Web 服务器及其常用工具的开源版本.Tornado 和现在的主流 Web ...
- tornado自定义session
这开始之前我们先了解以下什么是cookie和session 简单的说: cookie是保存在客户端的键值对 session是保存在服务端的键值对 session依赖与cookie 在Django中,可 ...
- Tornado 自定义Form,session实现方法
一. 自定义Tornado 验证模块 我们知道,平时在登陆某个网站或软件时,网站对于你输入的内容是有要求的,并且会对你输入的错误内容有提示,对于Django这种大而全的web框架,是提供了form表单 ...
- Tornado中Cookie过期问题
首先,web应用程序是使用HTTP协议进行数据传输,因为HTTP协议是无状态的,所以一旦提交数据完成后,客户端和服务器端的连接就会被关闭,再次进行数据的交换就得重新建立新的连接,那么,有个问题就是服务 ...
- tornado的cookie和secure cookie
tornado里面有关几个cookie的处理,在web.py文件里. get_cookie, set_cookie普通的设置cookie, clear_cookie, clear_all_cookie ...
- Tornado(cookie、XSRF、用户验证)
--------------------Cookie操作-------------------- 1.设置Cookie 1.set_cookie(name,value,domain=Non ...
随机推荐
- element-ui MessageBox的bug
通过 use引用messageBox有bug Vue.use(MessageBox) 页面一开始会有一个弹窗,内容空白 Vue.component(MessageBox.name, MessageBo ...
- 一起学Hadoop——使用IDEA编写第一个MapReduce程序(Java和Python)
上一篇我们学习了MapReduce的原理,今天我们使用代码来加深对MapReduce原理的理解. wordcount是Hadoop入门的经典例子,我们也不能免俗,也使用这个例子作为学习Hadoop的第 ...
- mySql中SUBSTRING_INDEX函数用法
SUBSTRING_INDEX(str,delim,count) 返回字符串 str 中在第 count 个出现的分隔符 delim 之前的子串.如果 count 是一个正数,返回从最后的(从左边开始 ...
- c_数据结构_顺序表
#define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 // 线性表存储空间的初始分配量 #define ...
- log4j.xml 报告集成
等级: trace< debug<info<warn<error<fatal trace 追踪 deug: eclipse, Log4j配置 [1]从零开始 a). ...
- 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
该题还是考杨辉三角计算,只不过最后每一行都放入List集合中,然后返回,直接看代码: public static List<List<Integer>> generate(in ...
- 007 numpy数组文件的存取
不知道这个有没有用,都整理了一番. 一:数组以二进制格式进行存储 1.说明 np.save与np.load是读写磁盘数组数据的两个重要函数. 默认情况下,数组以压缩的原始二进制格式保存在扩展名为npy ...
- group by 和where 条件后面不能用刚设置的别名。
select count(*),c_xy_bj a from z_user group by c_xy_bj 这个group by后面不能使用c_xy_bj 字段的别名a,只有外面再嵌套sel ...
- JAVA程序的基本结构
java程序(类)其实是一个静态方法库,或者是定义了一个数据类型.所以会遵循7种语法: 1.原始数据类型: ---整型:byte.short.int.long ---浮 ...
- TF之NN:matplotlib动态演示深度学习之tensorflow将神经网络系统自动学习并优化修正并且将输出结果可视化—Jason niu
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def add_layer(inputs, in_ ...