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相关推荐

  1. cookie和session的那些事儿

    COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...

  2. 会话Cookie及session的关系(Cookie Session)

    会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用sess ...

  3. 7,复习,多对多表的三种创建,form组件,cookie,session

    昨日内容回顾  choices字段   只要是能够罗列出来的有限个选项的都可以使用choices字段来做    1.学历,工作经历,性别,工作状态,客户来源,婚嫁    gender_choices ...

  4. Django之form组件加cookie,session

    ---恢复内容开始--- 多对表的三种创建 一全自动(推荐使用) 优点:不需要手动创建第三张表也就是我们之前一直用的,靠那个不会在数据库中显示的虚拟字段,告诉orm帮我们创建能够表示多对多关系的第三张 ...

  5. Javaweb Session与Cookie(自定义Session)

    课程目标: 熟悉Cookie.Session底层实现原理.自定义缓存.自定义Token.表单重复提交解决方案.Servlet之Fileter解决XSS攻击. 一..会话管理入门 1.1 生活中会话 我 ...

  6. Session与Cookie(自定义Session)

    一.会话管理 会话管理: 管理浏览器客户端 和 服务器端之间会话过程中产生的会话数据. 域对象: 实现资源之间的数据共享. request域对象 context域对象 会话技术: Cookie技术:会 ...

  7. Django之Cookie、Session、CSRF、Admin

    Django之Cookie.Session.CSRF.Admin Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES[ 'key' ] request.get ...

  8. 你想了解的Cookie和Session就在这~

    目录 1.会话的概念 2.保存会话的两种技术 3.Cookie 4.Session(重点) 1.会话的概念 我们知道session的意思就是会话,Cookie和Session 是两种会话技术,我们首先 ...

  9. Cookie和Session的区别与联系

    Cookie和Session Session 会话的理解 Session的作用 HTTP协议的无状态特点 Session的实现原理(重点) Session常用方法: Cookie 基本介绍 经典案例 ...

最新文章

  1. python搭建numpy_python开发环境搭建及numpy基本属性-【老鱼学numpy】
  2. 《Effective Java读书笔记》--序列化
  3. c语言通用Makefile
  4. 抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例
  5. const限定符用法汇总
  6. web逻辑思维题目_逻辑思维训练500题
  7. (全程图解)Axure RP8.0安装、破解、汉化教程
  8. 工程学导论——心得体会
  9. Python+Matplotlib科研绘图
  10. PMP每日一练 | 考试不迷路-5.13
  11. 休谟问题和金岳霖的回答
  12. Autosar MCAL-ICU输入捕获
  13. 本体学习方法及开发过程小结
  14. 产品经理在公司一般都是干什么?
  15. POI Word单元格合并
  16. java强制转换用法_Java入门课|这才是Java强制类型转换的正确使用方法,你真的会用这些吗...
  17. ELECTRONICON E62-C58-102E40
  18. 17 geth客户端了解和安装
  19. C/C++自助攒机系统
  20. Latex之使用APA格式引用:文中作者加年份,文末不编号

热门文章

  1. SpringMVC上传文件解析request请求为空获取不到数据问题
  2. 常见apk安装失败的错误及原因
  3. intellij IDEA debug android app之前执行adb命令
  4. NME的GLSL支持情况
  5. RHEL5.1安装VM TOOL及中文乱码终极解决方案
  6. [导入][转]好企业是什么样?
  7. c语言编程游戏界面,震惊!!!一个关于c语言图形化界面编程的小游戏-Go语言中文社区...
  8. 怎么逐步突破,成为Python高手?
  9. java笔试题_【干货分享】中兴通讯2021校招笔试测评攻略
  10. c语言统计单词字母个数,C语言统计单词个数