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数据存储在服务器高效.安全. ...
随机推荐
- win7 64位下自行编译OpenCV2.4.10+CUDA toolkit 5.5的整个过程以及需要注意的问题(opencv+cuda并行计算元素的使用)
首先说明的是,这个帖子是成功的编译了dll,但是这个dll使用的时候还是很容易出现各种问题的. 发现错误可能是由于系统安装了太多版本的opencv,环境变量的设置混乱,造成dll版本加载 ...
- objective-c中所谓的僵尸对象
正常情况下向已回收的对象发送消息时灵时不灵,具体要看该对象所占内存有没有被覆写.cocoa提供了僵尸对象(Zombie Object)这个功能,简单的说:启用该调试功能后,运行时会将所有已回收的实例转 ...
- Ubuntu安装java的最简单的命令行方式
由于经常要安装java,因此 深受其烦! 分为两部: 1. sudo apt-get install openjdk-7-jdk 2. sudo vim /etc/environment 然后把下面的 ...
- LeetCode(40)-Merge Sorted Array
听到初爱有感 开头啰嗦两句,刚在做算法题目的时候,听到了杨宗纬的<初爱>,突然有了一种本科时候的感觉,想想自己现在研二了,青春喂了狗,我果断喝了一罐啤酒,循环这首歌到吐-.. 题目: Gi ...
- asp.net core上使用redis探索(1)
基于Ubuntu安装redis, 我找的一个很好的网站: https://www.digitalocean.com/community/tutorials/how-to-install-and-con ...
- 通向从容之道——Getting things done读书笔记
一.主要的两个目的: 1. 抓住所有一切需要处理的事情: 2. 训练自己在接受一切"输入信息"的前期作出决定. 二.目前的问题: ...
- iframe局部刷新的二种实现方法
需求描述: 当页面有一部分是不变的或整个页面的图片很多时,可以考虑使用局部刷新,以提高整体的下载速度与用户体验. 1,iframe实现局部刷新的方法一 复制代码代码示例: <script t ...
- springMVC 中的restful 架构风格
RESTful架构 : 是一种设计的风格,并不是标准,只是提供了一组设计原则和约束条件,也是目前比较流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. ...
- IOS Swift语言开发 tableView的重用以及自cell的自适应高度
http://www.aichengxu.com/iOS/11143168.htm 一.准备数据 (这是一个元组,第一个元素为英雄的名字;第二个元素为英雄头像图片的名字,格式为.PNG,如果为其他的格 ...
- Kapacitor之TICK脚本,监控输出
好久没更新博客园了,说来也惭愧,之前说好每隔几天更新一个的,虽然没什么人看,但是作为一个记录,回顾也是能有新的认识,这篇博客是讲的目前我在工作中使用的一个结束点,这个技术点目前网上资料少之甚少,也是希 ...