[转]tornado入门 - session

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗

考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

考虑到减轻服务器性能方面,应当使用COOKIE。

4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

5、所以个人建议:

将登陆信息等重要信息存放为SESSION

其他信息如果需要保留,可以放在COOKIE中

创建唯一标识符

import uuid
uuid.uuid4()

tornado默认没有支持session

需要安装第三方

安装Redis 和 pycket

pip install pycket


使用pycket实现基于redis的session

例子

#-*- coding: utf-8 -*-  

import tornado.httpserver
import tornado.ioloop
import tornado.web
import os
import tornado.autoreload from tornado.options import define, options
#2 导入模块
from pycket.session import SessionMixin define('port', default=8000, help='Run on the given port', type=int)
define('debug', default=False, help='Set debug mode', type=bool) class HomeHandler(tornado.web.RequestHandler):
def get(self, *args, **kwargs):
self.render('index.html') #3 在使用session的handler上继承SessionMixin
class LoginHandler(tornado.web.RequestHandler, SessionMixin):
def get(self, *args, **kwargs):
self.render('login.html')
def post(self, *args, **kwargs):
self.set_secure_cookie('user', self.get_argument('user', None))
#4设置session
self.session.set('user_session_test', self.get_argument('user')) txt = str(self.session.get('user_session_test'))
#4测试session
self.write('Successully set cookie!, user_session_test value: %s' % txt) class OtherHtmlHandler(tornado.web.RequestHandler):
def get_current_user(self):
user = self.get_secure_cookie('user')
return user
@tornado.web.authenticated
def get(self, page):
pagename = page + '.html'
path = os.path.join(self.settings['static_path'], pagename)
self.render(pagename) class CustomApp(tornado.web.Application):
def __init__(self, debug = False):
settings = {
'template_path':os.path.join(os.path.dirname(__file__), 'moban_clean/templates'),
'static_path':os.path.join(os.path.dirname(__file__), 'moban_clean'),
'blog_title': "tornado blog",
'login_url': '/login.html',
'cookie_secret':"2379874hsdhf0234990sdhsaiuofyasop977djdj",
'xsrf_cookies':True,
'debug':debug,
#1 配置pycket 注意别忘记开启redis服务C:\redis>redis-server.exe
'pycket':{
'engine':'redis',
'storage':{
'host':'localhost',
'port': 6379,
'db_sessions':10,
'db_notifications':11,
'max_connections':2**31,
},
'cookies':{
#5 设置过期时间
'expires_days':2,
#'expires':None, #秒
},
}
}
handles = [
(r'/$', HomeHandler),
(r'/login.html', LoginHandler),
(r'/(.+?)\.html', OtherHtmlHandler),
(r'/(.+?\..+)', tornado.web.StaticFileHandler, dict(path=settings['static_path'])), ] super(CustomApp, self).__init__(handles, **settings) if __name__ == '__main__':
tornado.options.parse_command_line() app = CustomApp(debug=options.debug)
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
#tornado.autoreload.start()
tornado.ioloop.IOLoop.instance().start()

tornado session的更多相关文章

  1. 【源代码剖析】tornado-memcached-sessions —— Tornado session 支持的实现(二)

    客官您最终回头了! 让我们本着探(zuo)索(si)精神把 session.py 看完吧... 首先看看须要的库: pickle 一个用于序列化反序列化的库(听不懂?你直接看成和 json 一样作用即 ...

  2. Tornado session 插件 pycket 定制时间和时间续租

    功能描述:10分钟用户没有任何操作,跳转到登录页面. 分析:这个功能用session就能实现(由于pycket 的session内容是存储在memcached或者redis里面的.所以,session ...

  3. tornado 路由、模板语言、session

    一:tornado路由系统: 1.面向资源编程: 场景:当我们给别人提供api的时候,往往提供url.比如:电影票api: http://movie.jd.com/book_ticket:预订电影票. ...

  4. Tornado 简述

    前言 python 旗下,群英荟萃,豪杰并起.单是用于 web 开发的,就有 webpy.web2py.bottle.pyramid.zope2.flask.tornado.django 等等,不一而 ...

  5. Tornado自定义分布式session框架

    一.session框架处理请求执行的流程: 1.服务器端生成随机的cookie字符串 2.浏览器发送请求,服务器将cookie返回给浏览器. 3.服务器在生成一个字典.字典的key为cookie,va ...

  6. Session for Tornado(Redis) - 代码分享

    Session for Tornado(Redis) - 代码分享   Session for Tornado(Redis) session id的生成借用了web.py. 使用了 redis 的 h ...

  7. 为Tornado框架加上基于Redis或Memcached的session 【第三方】

    Tornado 没有session,只有cookie_secret,这在一些情况下是不利于开发的.所有我们可以给Tornado加上session的功能. 这篇文章讲解的是依靠第三方包来实现.以后的文章 ...

  8. tornado自定义session

    这开始之前我们先了解以下什么是cookie和session 简单的说: cookie是保存在客户端的键值对 session是保存在服务端的键值对 session依赖与cookie 在Django中,可 ...

  9. 自定义Tornado的session组件

    session和cookie的关系 cookie:保存在客户端浏览器上的键值对 session_id = "eyJ1c2VyX2luZm8iOiJ" session:保存在服务器上 ...

随机推荐

  1. .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...

  2. 通过Jexus 部署 dotnetcore版本MusicStore 示例程序

    ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...

  3. 微信小程序体验(2):驴妈妈景区门票即买即游

    驴妈妈因为出色的运营能力,被腾讯选为首批小程序内测单位.驴妈妈的技术开发团队在很短的时间内完成了开发任务,并积极参与到张小龙团队的内测问题反馈.驴妈妈认为,移动互联网时代,微信是巨大的流量入口,也是旅 ...

  4. CSS3 3D立方体效果-transform也不过如此

    CSS3系列已经学习了一段时间了,第一篇文章写了一些css3的奇技淫巧,原文戳这里,还获得了较多网友的支持,在此谢过各位,你们的支持是我写文章最大的动力^_^. 那么这一篇文章呢,主要是通过一个3D立 ...

  5. SQL Server-聚焦计算列或计算列持久化查询性能(二十二)

    前言 上一节我们详细讲解了计算列以及计算列持久化的问题,本节我们依然如前面讲解来看看二者查询性能问题,简短的内容,深入的理解,Always to review the basics. 持久化计算列比非 ...

  6. c++ pair 使用

    1. 包含头文件: #include <utility> 2. pair 的操作: pair<T1,T2> p; pair<T1,T2> p(v1,v2); pai ...

  7. C# Entity Framework并发处理

    原网站:C# Entity Framework并发处理 在软件开发过程中,并发控制是确保及时纠正由并发操作导致的错误的一种机制.从 ADO.NET 到 LINQ to SQL 再到如今的 ADO.NE ...

  8. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题

    现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要 ...

  9. Linux LVM逻辑卷配置过程详解

    许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据,甚至被迫重新规划分区并重装操作系统,以 ...

  10. Linux网卡驱动安装、防火墙原理

    安装网卡驱动程序: 需要检查是否安装kernel依赖包: rpm –q kernel-devel #检查kernel依赖包是否安装 yum –y install kernel-devel 检查gcc和 ...