一 会话跟踪

  在一个会话的多个请求中共享数据,这就是会话跟踪技术
  • 请求登录(请求参数是用户名和密码);
  • 请求转账(请求参数与转账相关的数据);
  • 请求信誉卡还款(请求参数与还款相关的数据)。

  

  登录信息在这个会话中是数据共享的,如果登录的是张三,那么在转账和还款时一定是相对张三的转账和还款!这就说明
我们必须在一个会话过程中有共享数据的能力。

二 cookies篇

  1  cookie简单定义

1 cookie是在HTTP中它表示服务器送给客户端浏览器的小甜点。
2 key-value结构;
3 由服务器创建;
4 浏览器保存cookie

  2 cookie执行流程

1 浏览器首次post 请求浏览器的时候回携带一个空的cookie :{}

2 如果操作验证通过(登录成功)后,服务器创建一个cookie :{key:value},作为响应头的一部分传给浏览器.

3 浏览器下次访问网页的时候带着 ,这个创建好的cookie:{key:value}请求,服务器查看cookie信息,如果cookie
 存在,则放行,否则拦截.

  3 cookie规范

注意 :
浏览器之间是不能进行共享cookie的;
也就是说在你使用IE访问服务器时,服务器会把Cookie发给IE,然后由IE保存起来,当你在使用FireFox访问
服务器时,不可能把IE保存的Cookie发送给服务器。

  4 cookie 与Http头 -----------cookie 是通过HTTP请求和响应头在客户端和服务端进行传递的;

    4.1 cookie:请求头,客户端发给服务器; 首次post请求cookie为空

 格式:cookie:a=A;b=B;c=C.多个cookie用';'隔开;

    4.2  set_cookie:响应头 ,服务器发送给客户端

    格式:一个cookie对象一个set-cookie:
如:set-cookie:a=A set-cookie:b=B set-cookie:c=C

  5 cookie覆盖

如果服务器发送重复的cookie,那么会覆盖原有的cookie;
如 :
第一次:Set-Cookie: a=A;
第二次:Set-Cookie: a=AA
则最后客户端留下的cookie是 cookie:a=AA。

  6 django中的cookie语法

    6.1服务端在验证通过后,设置cookie

rep = HttpResponse(...) 或 rep = render(request, ...) 或 rep = redirect()

#rep是响应对象,只有相应对象才有.set_cookie方法

rep.set_cookie(key,value) #一次只能绑定一个cookie键值对

rep.set_signed_cookie(key,value,salt='加密盐')  #加密方式绑定cookie键值对

    6.2 再次登录,获取cookie信息,进行验证

value=request.COOKIES('key') #获取cookie中键为key的值

    6.3 删除cookie

response.delete_cookie("key") #删除cookie中key的那个键值对

  7 实例代码

def login(request):
if request.method=='GET':
return render(request,'login.html')
else:
user=request.POST.get('user')
pwd=request.POST.get('pwd')
user_obj=models.UserInfo.objects.filter(user=user,pwd=pwd).filter()
if user_obj:
res_obj=redirect('/index/')
res_obj.set_cookie("is_login",True,max_age=20)
res_obj.set_cookie("user",user)
return res_obj
return HttpResponse('账户或者密码错误')

login cookies

三session篇

1 session 技术

1 给用户的浏览器创建一个独享的session对象;

2 每个浏览器都开辟独有的session资源;

3 用户再去访问该服务器中的其它web资源时,其它web资源再从用户各自的session中 取出数据为用户服务.

2 session 流程

3 django 中的session语法,结合session流程讲解

  3.1 设置session

request.session['is_login']=True

    3.1.1设置session 执行流程

 if not 钥匙:
1 创建随机字符串
2 在django-sesion表中创建记录
session-key session-data
随机字符串 {"k1":"v1","k2":"v2"}
3 res.set_cookie("sessionid",随机字符串)
else: 2 在django-sesion表中创建记录
session-key session-data
随机字符串 {"k1":"v1"}
3 更新

设置session流程

  3.2 获取session值

session_name = request.session["session_name"]

    3.2.1获取session 执行流程

1 取钥匙   (request.COOKIES.get("sessionid"))

2 在django-sesion表中查询记录:session-key=钥匙

3 通过对象.k1将值返回

获取session流程

  3.3 删除session的值

del request.session["session_name"]

    3.3.1 获取session执行流程

request.session.get("is_login")的实现:

1 取钥匙;

2 去django-session表中获取对应记录对象

3 通过对象取出is_login这个键对应的值

删除session值的流程

  3.4 删除session

request.session.flush()

    3.4.1删除session执行流程

 1 取钥匙   (request.COOKIES.get("sessionid"))

 2 在django-sesion表中查询记录:session-key=钥匙

 3 记录对象被删除

flush删除流程

Cookies 和session的更多相关文章

  1. Cookies和Session的区别

    原文:http://www.cnblogs.com/lijihong/p/4743818.html 今天主要学习了Cookies和Session,网络上关于这方面的知识可谓很多,让人眼花缭乱,在此作一 ...

  2. Cookies和Session理论总结

    今天主要学习了Cookies和Session,网络上关于这方面的知识可谓很多,让人眼花缭乱,在此作一个小结.本文不讲多,不讲什么高大上的,只是抛出一块砖,讲三个问题:①什么是Cookies和Sessi ...

  3. 18、cookies与session学习笔记

    本文记录学习 cookies 和 session 的一些小练习和知识点   知识点1    cookies 和 session 的由来   HTTP协议是无状态的协议,因为一旦浏览器和服务器之间的请求 ...

  4. cookies和session

      基于cookies做用户验证时,敏感信息不适合放在cookies中 cookies保存在客户浏览器端的键值对 session保存在服务器端的键值对(依赖于cookies),把用户浏览器中的cook ...

  5. django cookies与session

    1. cookiies # cookies def login(request): print('COOKIES',request.COOKIES) print('SESSION',request.s ...

  6. 有关cookies与session的详细信息

    COOKIES与SESSION 详细信息参考:https://www.cnblogs.com/linguoguo/p/5106618.html 会话(Session)跟踪是Web程序中常用的技术,用来 ...

  7. django中cookies和session

    django中cookies和session是两个经常使用的用户认证工具.都是类似于字典的数据类型,都是request的内部属性 cookies的读写方法 cookies读,比如username us ...

  8. asp.net网站防恶意刷新的Cookies与Session解决方法

    本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧.分享给大家供大家参考.具体实现方法如下: Session版实现方法: public ...

  9. Cookies和Session的定义与区别

    Cookies和Session二者的定义: 当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来.当下次你再光临同一个网 ...

随机推荐

  1. Visual Studio 2017中使用Libman管理客户端库

    什么是Libman 微软在Visual Studio 2017 15.8版本中内嵌了一个新的工具Library Manager. Library Manager(简称Libman)是一个客户端库管理工 ...

  2. SpringBoot入门教程(四)MyBatis generator 注解方式和xml方式

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...

  3. Kafka~HelloWorld得来不易

    今天连搭了zookeeper和kafka的环境,并部署成功,但在.net驱动的操作下,没有消费成功,原因何在? 防火墙 zookeeper没运行? kafka没有公开IP? 第一感觉也就是这向个原因了 ...

  4. react~props和state的介绍与使用

    props是参数的传递,从上层模块向下层模块进行拿传递:而state是提局域变量,一般在本模块内使用,props是不能改变的,而state可以通过setState去修改自身的值. props Reac ...

  5. Chapter 4 Invitations——14

    "Hi, Bella." “你好,Bella” "What's up?" I said as I was unlocking the door. “怎么了?” ...

  6. 汇编实现: C库常见函数,串操作指令作用

    目录 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 二丶loads实现Strlen操作. 三丶stos的作用 汇编实现: C库常见函数 一丶汇编实现Strncpy拷贝函数 void _ ...

  7. REST API设计指导——译自Microsoft REST API Guidelines(一)

    前言 前面我们说了,有章可循,有据可依,有正确的产品流程和规范,我们的工作才不至于产生混乱,团队的工作才能更有成效.我们经常见到,程序开发可能只用了半个月,但是接口的联调却经常需要花费半个月甚至一个月 ...

  8. 初识TensorFlow

    在前边几期的文章中,笔者已经用TensorFlow进行的一些基础性的探索工作,想必大家对TensorFlow框架也是非常的好奇,本着发扬雷锋精神,笔者将详细的阐述TensorFlow框架的基本用法,并 ...

  9. STM32-FreeRTOS快速学习之总结1

    1. 基础知识注意:在RTOS中是优先值越高则优先级越高(和ucos/linux的相反) 在移植的时候,主要裁剪FreeRTOS/Source/portable文件夹,该文件夹用来针对不同MCU做的一 ...

  10. 轻松搞定RocketMQ入门

    RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 能够保证严格的消息顺序 提供丰富的消息拉取模式 高效的订阅者水平扩展能力 实时的消息订阅机制 亿级消息堆积能力 RocketMQ网络 ...