一 会话跟踪

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

  

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

二 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. TDX指标的理解与改造(价格到达指标线提醒)

    目的:画线指标理解,并同时改造成条件选股指标. 参考:https://mp.csdn.net/postedit/83176406 #ff7700 hex color  https://www.colo ...

  2. 『Kruscal重构树 Exkruscal』

    新增一道例题及讲解 Exkruscal \(Exkruscal\)又称\(Kruscal\)重构树,是一种利用经典算法\(Kruscal\)来实现的构造算法,可以将一张无向图重构为一棵具有\(2n-1 ...

  3. 【FairyGUI & Unity】实现血条UI扣血与加血的缓动效果

    组件设计 创建一个进度条组件,作为血条. bar是实际血量条 DownBar是扣血缓动背景图层 UpBar是加血缓动背景图层 LowBar是低血量变色(和控制器配合,本文不讲) n11组合是血量参考线 ...

  4. Python和C++的混合编程(使用Boost编写Python的扩展包)

    想要享受更轻松愉悦的编程,脚本语言是首选.想要更敏捷高效,c++则高山仰止.所以我一直试图在各种通用或者专用的脚本语言中将c++的优势融入其中.原来贡献过一篇<c++和js的混合编程>也是 ...

  5. Eureka中的核心概念

    图片的链接出了一点小bug,导致图片不能正常访问,小伙伴们可以移步这里:https://mp.weixin.qq.com/s/kAqOTKUt_qPlxzI4aGS5Pw 本文是Spring Clou ...

  6. vs2012 aps.net 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为

    系统换成Windows10安装VS2012打开项目总提示:vs2012 aps.NET 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为使用ASP.net 4.5,这样您的网站才可能正确 ...

  7. Kafka性能测试实例

    1.概述 在分布式实时数据流场景下,随着数据量的增长,对Kafka集群的性能和稳定性的要求也很高.本篇博客将从生产者和消费者两方面来做性能测试,针对具体的业务和数据量,来调优Kafka集群. 2.内容 ...

  8. 【Java基础】【01初识Java】

    01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...

  9. linux文本处理三剑客的学习

    linux下有三个文本处理的神器.分别是grep,sed,awk.功能都是比较强大的. grep帮助: http://my-study-grep.readthedocs.io/en/latest/ s ...

  10. Maven(十五)Maven 聚合

    聚合解决的问题: 解决每个模块之间都要一个一个安装,一键安装各个模块工程 尤其时在配置继承后要先安装子模块在安装父,模块. 配置方式 自己找一个工程作为聚合工程,配置好后在聚合工程上运行Maven i ...