tornado 09 cookie和session
tornado 09 cookie和session
一、cookie
#有什么办法能够让浏览器记住登录信息,下次再打开的时候可以自动登录?网站是如何记录登录信息的?
class SetCookieHandler(tornado.web.RequestHandler):def get(self):self.set_cookie('cookie_test','xuwei') #到期时间为会话结束self.set_cookie('cookie_test2','zhouxuming',expires=time.time()+60) #到期时间设置60sself.set_cookie('cookie_test3','liuzezhong',expires_days=1) #到期时间设置1天self.set_cookie('cookie_test4','liuzezhong1',path='/') #获取路径self.set_cookie('cookie_test5','liuzezhong2',httponly = True) #JS就不会被cookie获取到self.set_cookie('cookie_test6','liuzezhong3',max_age = 120 , expires=time.time()+60) #max_age优先级比expires高,前面为120s,所以根据前面的来self.set_secure_cookie('cookie_test7','xuchengcheng') #设置一个加密的cookie,但是必须在下面的application里面添加cookie_secret = 'lidang',才可以self.write('set cookie')class GetCookieHandler(tornado.web.RequestHandler):def get(self):get_cookie = self.get_cookie('cookie_test')get_cookie2 = self.get_cookie('cookie_test2')get_cookie3 = self.get_secure_cookie('cookie_test7')print(get_cookie,get_cookie2,get_cookie3)self.write('get cookie')
二、验证登录
如何实现自动验证
#1、导入装饰器 from tornado.web import authenticated#2、设置BaseHandler类,重写函数get_current_user class BaseHandler(tornado.web.RequestHandler):def get_current_user(self): #前面有绿色小圆圈带个o,再加一个箭头表示重写current_user = self.get_secure_cookie('ID')if current_user:return current_userreturn None#3、在LoginHandler类中的post函数里面加上self.set_secure_cookie('ID',user)#4、在BuyHandler类里面添加装饰器 class BuyHandler(BaseHandler):@authenticateddef get(self):self.write('许铖铖买了好多书')#5、在application里面设置跳转路由login_url = '/login',
在登录完成后,从一个路由跳转到登录页面,在完成登录之后,该如何跳到之前的页面
#1、获取之前的路由 #在使用authenticated之后,如果验证不成功,会自动跳转登陆路由,并且在URL后面添加上next参数,next参数的参数值就是之前的路由def get(self, *args, **kwargs):nextname = self.get_argument('next','') #将原来的路由赋值给nextnameself.render('lesson2.html',nextname = nextname) #跳转到html后#2、修改模板文件 #在html模板中添加next参数,并且参数值为之前的路由<form method="post" action="/login?next={{ nextname }}">#3、修改post方法 #获取之前的页面的路由,当登录验证通过之后,设置加密的cookie,并跳转到之前的路由def post(self, *args, **kwargs):nextname = self.get_argument('next','') #获取之前页面的路由user = self.get_argument('name')password = self.get_argument('password','')username =User.by_name(user)if username and password == username[0].password:self.set_secure_cookie('ID',user)self.redirect(nextname) #跳转带之前的路由else:self.render('lesson2.html',nextname=nextname)
三、session
#cookie的信息可以用来保存用户的登录信息,但是cookie是很容易被拦截的,所以其中必定不能有用户的任何私密信息,有没有一种办法可以让服务器保存用户的登录信息,但是cookie中又不会有用户的任何信息?
#1、安装模板 #在MySQL里面输入pip install pycket ;pip install redis #或者 #file--->Default Settings ---> Project Interpreter ---->绿色加号 添加模块#2、 导入模块 from pycket.session import SessionMixin#3、继承SessionMixin class BaseHandler(tornado.web.RequestHandler,SessionMixin):class LoginHandler(tornado.web.RequestHandler,SessionMixin):#4、在application里面添加配置 pycket = {'engine':'redis','storage':{'host':'localhost','port':6379,'db_sessions':5,'db_notifications':11,'max_connections':2 ** 33,},'cookie':{'expires_days':38,'max_age':100}}#5、在BaseHandler里面修改设置cookie为设置sessioncurrent_user = self.session.get('user')#6、在LoginHandler里面的post里面修改获取cookie为获取sessionself.session.set('user',username[0].username)
四、XSRF
#使用session可以保证用户信息不被cookie泄露,那如果攻击者不想获取用户信息,只是在提交form表单是攻击,该如何防范?#只需要在html模板中添加 {% module xsrf_form_html() %} 即可
#当登录信息发送到服务器中去的时候,form表单和cookie里面都会有一个随机码,如果发送到服务器的时候这两个码不相同,那就表示被拦截了,服务器会拒绝客户端发送的请求
转载于:https://www.cnblogs.com/xuchengcheng1215/p/9050177.html
tornado 09 cookie和session相关推荐
- cookie和session的那些事儿
COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...
- 会话Cookie及session的关系(Cookie Session)
会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用sess ...
- 7,复习,多对多表的三种创建,form组件,cookie,session
昨日内容回顾 choices字段 只要是能够罗列出来的有限个选项的都可以使用choices字段来做 1.学历,工作经历,性别,工作状态,客户来源,婚嫁 gender_choices ...
- Django之form组件加cookie,session
---恢复内容开始--- 多对表的三种创建 一全自动(推荐使用) 优点:不需要手动创建第三张表也就是我们之前一直用的,靠那个不会在数据库中显示的虚拟字段,告诉orm帮我们创建能够表示多对多关系的第三张 ...
- Javaweb Session与Cookie(自定义Session)
课程目标: 熟悉Cookie.Session底层实现原理.自定义缓存.自定义Token.表单重复提交解决方案.Servlet之Fileter解决XSS攻击. 一..会话管理入门 1.1 生活中会话 我 ...
- Session与Cookie(自定义Session)
一.会话管理 会话管理: 管理浏览器客户端 和 服务器端之间会话过程中产生的会话数据. 域对象: 实现资源之间的数据共享. request域对象 context域对象 会话技术: Cookie技术:会 ...
- Django之Cookie、Session、CSRF、Admin
Django之Cookie.Session.CSRF.Admin Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES[ 'key' ] request.get ...
- 你想了解的Cookie和Session就在这~
目录 1.会话的概念 2.保存会话的两种技术 3.Cookie 4.Session(重点) 1.会话的概念 我们知道session的意思就是会话,Cookie和Session 是两种会话技术,我们首先 ...
- Cookie和Session的区别与联系
Cookie和Session Session 会话的理解 Session的作用 HTTP协议的无状态特点 Session的实现原理(重点) Session常用方法: Cookie 基本介绍 经典案例 ...
最新文章
- python搭建numpy_python开发环境搭建及numpy基本属性-【老鱼学numpy】
- 《Effective Java读书笔记》--序列化
- c语言通用Makefile
- 抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例
- const限定符用法汇总
- web逻辑思维题目_逻辑思维训练500题
- (全程图解)Axure RP8.0安装、破解、汉化教程
- 工程学导论——心得体会
- Python+Matplotlib科研绘图
- PMP每日一练 | 考试不迷路-5.13
- 休谟问题和金岳霖的回答
- Autosar MCAL-ICU输入捕获
- 本体学习方法及开发过程小结
- 产品经理在公司一般都是干什么?
- POI Word单元格合并
- java强制转换用法_Java入门课|这才是Java强制类型转换的正确使用方法,你真的会用这些吗...
- ELECTRONICON E62-C58-102E40
- 17 geth客户端了解和安装
- C/C++自助攒机系统
- Latex之使用APA格式引用:文中作者加年份,文末不编号
热门文章
- SpringMVC上传文件解析request请求为空获取不到数据问题
- 常见apk安装失败的错误及原因
- intellij IDEA debug android app之前执行adb命令
- NME的GLSL支持情况
- RHEL5.1安装VM TOOL及中文乱码终极解决方案
- [导入][转]好企业是什么样?
- c语言编程游戏界面,震惊!!!一个关于c语言图形化界面编程的小游戏-Go语言中文社区...
- 怎么逐步突破,成为Python高手?
- java笔试题_【干货分享】中兴通讯2021校招笔试测评攻略
- c语言统计单词字母个数,C语言统计单词个数