session会话管理
session会话和cookie一起被称为会话跟踪技术,主要通过保存在服务器端的session数据和客户端浏览器的cookie数据共同完成用户访问服务器的足迹记录。
1. 什么是会话
会话session通常情况下,当客户端浏览器打开之后第一次访问服务器时,服务器会记录该浏览器客户端的信息,保存在服务器的session空间中,会话建立!
如果用户在打开的浏览器没有完全关闭(关闭所有的选项卡)的情况下,会保持会话,在访问服务器的过程中,会一直使用当前会话。如果完全关闭浏览器时客户端的session失效也就是会话失效了。
会话通常用于保存一些用户在访问服务器过程中频繁访问的数据或者记录访问过程中的一些状态数据的作用,诸如记录用户登录状态等等
2. tornado中的会话
tornado中默认不支持会话操作,通常情况下可以通过cookie或者secure cookie进行会话管理。
但是某些情况下我们不能否认,session操作能很方便的处理数据并且预防一些类似cookie伪造发起的攻击等等,所以我们在tornado中还是非常期望出现session会话管理的。
Congratulaions!tornado中,我们通过第三方模块来完成会话操作,tornado中主要通过我们之前学过的缓存数据库redis结合pycket模块来完成
3. 会话操作
首先在电脑上安装需要的模块,这里要安装主要的模块pycket,该模块封装了session的主要操作,模块中封装的保存数据的引擎对象,我们选择缓存数据库redis,so,在你的电脑上,也要安装好redis缓存数据库哦
PS:redis缓存数据库部分请参考《数据库》部分文档
# 安装pycket模块 > pip install pycket
安装好pycket模块之后,就可以通过该模块中的SessionMixin类进行session的管理操作了。
主要分两个操作步骤
- 通过self.session.set(name, value)设置值,通过self.session.get(name)获取值
- 在Application中添加pycket配置,完成数据存储引擎的配置
上干货:
# -*- coding:utf-8 -*-
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop
from pycket.session import SessionMixin
class IndexHandler(RequestHandler, SessionMixin):
def get(self):
self.session.set("login", self.get_argument("name"))
self.write("index get ok!")
class DetailHandler(RequestHandler, SessionMixin):
def get(self):
name = self.session.get("login")
self.write("detail get ok! %s" % name)
if __name__ == "__main__":
import base64, uuid
cookie_secret = base64.b64encode(uuid.uuid4().bytes)
app = Application(
[(r"/", IndexHandler),
(r"/detail", DetailHandler)],
cookie_secret=cookie_secret,
pycket={
"engine": "redis",
"storage": {
"host": "localhost",# 设置redis主机
"port": 6379,# 设置链接端口
"max_connections": 2**64# 设置最大连接数
},
"cookies": {
"expires_days": 2 # 设置过期时间
}
}
)
app.listen(8888)
IOLoop.current().start()
4. 运行测试
打开浏览器,访问http://localhost:8888,会自动调用IndexHandler的get()方法,给session中存储数据
再次在浏览器地址栏中输入:http://localhost:8888/detail访问DetailHandler处理类获取session中存储的数据
session会话管理的更多相关文章
- .net用SQL Server进行session会话管理
保存在内存中的session经常由于dll的变动导致丢失.有一种方法可以长期保存session,那就是session的SqlServer模式. ASP.NET允许将会话数据存储到一个数据库服务器中,方 ...
- 第二章 Session会话管理
采用网址重写的缺点: 在有些Web浏览器中,URL限制为2000个字符. 仅当有链接要插入值时,值才能转换成后面的资源.此外,要把值添加到静态页面的链接中,可不是一件容易的事情. 网址重写必须在服务器 ...
- JavaWeb中Session会话管理,理解Http无状态处理机制
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512955067434271246/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...
- session会话管理,与过滤器使用,访问控制
1 用户登录,是否注册用户,在登录处理页面进行用户验证,创建session保存用户名和密码 2否,进入用户注册页面 3是,系统保存该用户的登录信息 4进入要访问的页面 5用户直接访问某个页面, 6系统 ...
- 4.会话管理(Session)
1.会话管理的概念和基本原理: 会话管理概念: 会话的实现过程: 2.使用Cookie.隐藏域.URL重写实现会话管理 创建并向客户端发送Cookie; 从客户端读取Cookies Cookie的方法 ...
- 分布式Tomcat session会话Sticky Sessions问题
分布式session会话Sticky Sessions - tomcat_baby的专栏 - CSDN博客https://blog.csdn.net/tomcat_baby/article/detai ...
- JavaWeb中Cookie会话管理,理解Http无状态处理机制
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512995108961387015/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...
- java的会话管理:Cookie和Session
java的会话管理:Cookie和Session 1.什么是会话 此处的是指客户端(浏览器)和服务端之间的数据传输.例如用户登录,购物车等 会话管理就是管理浏览器客户端和服务端之间会话过程产生的会话数 ...
- PHP会话管理:cookie和session
PHP会话管理1.cookie数据存储在浏览器端方便与JavaScript交换数据方便获取用户信息风险-浏览器可能会禁用cookie替代方案-URL参数 2.session数据存储在服务器高效.安全. ...
随机推荐
- 【Qt编程】基于Qt的词典开发系列<十四>自动补全功能
最近写了一个查单词的类似有道词典的软件,里面就有一个自动补全功能(即当你输入一个字母时,就会出现几个候选项).这个自动补全功能十分常见,百度搜索关键词时就会出现.不过它们这些补全功能都是与你输入的进行 ...
- 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文件
<万能数据库查询分析器>实现使用SQL语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要 用SQL语句来直接访问文本文件?是在做梦吗? ...
- javascript访问html元素的内容(2)
对于(1)中最后一个包装方式创建的是一个方法,我们必须以方法调用的方式来使用它,这和其他默认的以属性返回结果略有不同,如果有强迫症的童鞋有些伤不起,那么我们下面就把它实现为属性返回的方式: //chi ...
- 用JAVA代码获取Weblogic配置的JNDI 数据源连接
第一步:生成与JDK版本对应的weblogicjar,利用cmd 进入到weblogic_home 路径下进入到server/lib目录,然后运行 JDK 1.6 命令 "java -j ...
- ubuntu18.04 安装mysql 5.7.22
后台下载,脱离终端控制 后台下载,可以节省ssh资源占用,且不会因为ssh连接断开而导致下载失败,适用于操作远端云服务器 wget -b 启动后台下载 -o 指定logfile(记录下载进度信息) w ...
- 《深入理解Java虚拟机》读书笔记3--垃圾回收算法
转载:http://blog.csdn.net/tjiyu/article/details/53983064 下面先来了解Java虚拟机垃圾回收的几种常见算法:标记-清除算法.复制算法.标记-整理算法 ...
- JavaScript设计模式之一Interface接口
如何用面向对象的思想来写JavaScript,对于初学者应该是比较难的,我们经常用的JQuery其实也是用面向对象的思想去封装的,今天我们来看看如何在Javascript中用Interface,在C# ...
- parted分区详解 查看UUID两种方式 blkid 和 ls -l /dev/disk/by-uuid
通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大:而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘.但是现在的磁盘空间很多都已经是 ...
- How To Install and Use Redis
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-Redis About Redis redis, dev ...
- Android的颜色值转换
Android的颜色int值比较变态,是个负值,用计算机术语讲叫补码,手工转换比较麻烦,首先看看文档 https://developer.android.com/reference/android/g ...