看了会视频,终于搞懂了~

1.cookie

cookie:保存状态

cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了。

cookie缺点:

1.最大支持4kb,现在也有厂商推出8kb,但是内存总归有限。

2.cookie保存在客户端,容易被拦截或窃取。==》session诞生:存储字节大,存储内容多,保存在服务器,有较高的安全性,除非你服务器被攻击。

服务端给客户端每个cookie分配唯一的id,用户在访问时,通过cookie就知道访问的人是谁。然后我们再根据不同的cookie的id,在服务器上保存一段时间的私密资料,如“账号密码”等等。

cookie和session其实是共通性的东西,不限于语言和框架

session和cookie都是类似key:value的形式

把cookie保存的所有键值对信息都放到session里,session发送一个随机字符串给cookie,这样cookie就只有一个随机字符串,相当于一把钥匙。

session里key是发送给cookie的随机字符串,value是cookie原来的键值对。

session的键值对可以存在文件里,可以放在缓存里,可以放在数据库里。

登陆应用原理:

1.如果知道后台的url地址,我们就不需要通过登陆才能进入别的页面,所以需要一个验证过程,先登录才能进入其他页面。

2.认证机制:一旦我们通过了认证。服务器端就会发送一组随机唯一的字符串(假设是123abc)到浏览器端,这个被存储在浏览端的东西就叫cookie。

而服务器端也会自己存储一下用户当前的状态,比如login=true,username=hahaha之类的用户信息。但是这种存储是以字典形式存储的,字典的唯一key就是刚才发给用户的唯一的cookie值。那么如果在服务器端查看session信息的话,理论上就会看到如下样子的字典==》服务端key就是返回给客户端的cookie

{'123abc':{'login':true,'username:hahaha'}}

3.打开新浏览器依然需要重新登陆,服务端的key:value都是被加密的,看不到明文。

cookie的基本使用

1.获取cookie

request.COOKIES.get(''islogin'',None) # 如果有就获取,没有就默认为None

2.设置cookie

obj.set_cookie("islogin",True) # 服务端设置cookie的值。第一个参数是键,第二个参数是值

obj.set_cookie("islogin",True,20) # 20代表过期时间

3.删除cookie

obj.delete_cookie("cookie_key",path="/",domain=name)

登陆认证实例:

cookie存储到客户端

优点:数据存储在客户端。减轻服务端的压力,提高网站的性能

缺点:安全性不高,在客户端很容易被查看或破解用户会话信息

session的基本使用

如果有时候request.session拿不到session需要把中间件那个常量改成MIDWARE_CLASSES

1.session的常用操作

1 1、设置session值
2     request.session["session_name"]="admin"
3 2、获取session值
4     session_name = request.session("session_name")
5 3、删除session值
6     del request.session["session_name"]  删除一组键值对
7     request.session.flush()   删除一条记录
8 4、检测是否操作session值
9     if "session_name"  is request.session:

2.一些非常用操作

 1 5、get(key, default=None)
 2
 3 fav_color = request.session.get('fav_color', 'red')
 4
 5 6、pop(key)
 6
 7 fav_color = request.session.pop('fav_color')
 8
 9 7、keys()
10
11 8、items()
12
13 9、setdefault()
14
15 10、flush() 删除当前的会话数据并删除会话的Cookie。
16             这用于确保前面的会话数据不可以再次被用户的浏览器访问
17             例如,django.contrib.auth.logout() 函数中就会调用它。
18 用户session的随机字符串
19         request.session.session_key
20
21         # 将所有Session失效日期小于当前日期的数据删除
22         request.session.clear_expired()
23
24         # 检查 用户session的随机字符串 在数据库中是否
25         request.session.exists("session_key")
26
27         # 删除当前用户的所有Session数据
28         request.session.delete("session_key")
29
30         request.session.set_expiry(value)
31             * 如果value是个整数,session会在些秒数后失效。
32             * 如果value是个datatime或timedelta,session就会在这个时间后失效。
33             * 如果value是0,用户关闭浏览器session就会失效。
34             * 如果value是None,session会依赖全局session失效策略。

3.流程解析

转载于:https://www.cnblogs.com/Roc-Atlantis/p/9639861.html

cookie和session基础以及在Django中应用相关推荐

  1. Django基础11(Django中form表单)

    Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入 ...

  2. cookie和session 以及Django中应用

    cookie和session 以及Django中应用 cookie和session机制 cookie和session机制 cookie机制采用的是在客户端保持状态的方案.作用就是为了解决HTTP协议无 ...

  3. Django - Cookie和Session

    Django - Cookie和Session cookie Django中操作Cookie Cookie版登陆校验 Session Django中Session相关方法 Session流程解析 Se ...

  4. Day 63 django 中间件、cookie、session

    Day 63 django 中间件.cookie.session 文章目录 Day 63 django 中间件.cookie.session 1.cookie与session 简介 2.django操 ...

  5. 【Django】Django中cookies、session和token实现demo

    一.cookies和session HTTP是一种无状态的协议,客户端向服务端发起请求,在通过用户名和密码进行用户认证后,HTTP协议不会记录认证状态,所以用户在下次请求时还是需要再次认证.为了能够保 ...

  6. django中获取sessionid

    之前在django中一直用session处理一些问题,这次想拿到sessionid数据,发现跟以前的想法不太一样: django中的sessionid要通过下面这种方式取到: session_key ...

  7. 设置cookie存活时间_Django之cookie、session、token

    客户端会话技术:cookie 服务端会话技术:session 自定义会话技术:token 一.cookie cookie本身由服务器端生成,通过Response将cookie写到浏览器上,下一次再次访 ...

  8. Cookie、Session和自定义分页

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  9. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066

    django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066 1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate( ...

  10. 15. cookie、session、token

    cookie.session.token 一.cookie 1.cookie的由来 2.cookie是什么? 3.cookie的原理 4.Cookie规范 4.django中操作cookie(增删改查 ...

最新文章

  1. 本地Yum仓库搭建部署
  2. prim算法构建最小生成树
  3. python k线顶分型_【缠论】分型、笔的定义及其程序化
  4. js兼容注意事项--仅供参考
  5. Flexible 弹性盒子模型之CSS align-items 属性
  6. 植物大战僵尸不能保存进度
  7. Mr.J--C语言经典编程100例
  8. 【Kafka】Kafka Schema Registry 原理
  9. Linux内核协议栈- 创建socket:__sock_create函数调用关系
  10. iPhone X 再曝新 Bug:电话无法接听!
  11. C#联合Halcon 自定义控件鼠标双击响应事件
  12. 有关学习Android资料的一些网站
  13. 从机器学习到深度学习
  14. 各种材料衣服的保养 全面知识分享
  15. python爬取别人qq空间相册_python+selenium+requests爬取qq空间相册时遇到的问题及解决思路...
  16. 理解加载class到JVM的时机
  17. 集成底座项目实施总结
  18. jquery的事件命名空间详解
  19. EKL构造点和线的基本用法
  20. build-essential unmet dependencies 有未满足依赖 解决办法

热门文章

  1. 如何使用SpingMvc实现省市县三级级联?
  2. 表锁 行锁 页锁 是什么区别
  3. C++ std::function怎么用
  4. kubernetes视频教程笔记 (26)-集群调度-节点亲和性
  5. Hyperledger Fabric 或 Composer的configtx.yaml配置文件解析
  6. java 实体类重写排序,对自定义对象进行排序(C++/Java) | 学步园
  7. python申明变量和赋值_Python入门(二)
  8. oracle反生异常会回滚吗,Oracle transaction rollback 事务异常回滚问题分析
  9. php如何处理耗时的任务,PHP如何在请求完毕后继续处理耗时任务
  10. dp规划之矩阵连乘问题