cookie和session基础以及在Django中应用
看了会视频,终于搞懂了~
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中应用相关推荐
- Django基础11(Django中form表单)
Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入 ...
- cookie和session 以及Django中应用
cookie和session 以及Django中应用 cookie和session机制 cookie和session机制 cookie机制采用的是在客户端保持状态的方案.作用就是为了解决HTTP协议无 ...
- Django - Cookie和Session
Django - Cookie和Session cookie Django中操作Cookie Cookie版登陆校验 Session Django中Session相关方法 Session流程解析 Se ...
- Day 63 django 中间件、cookie、session
Day 63 django 中间件.cookie.session 文章目录 Day 63 django 中间件.cookie.session 1.cookie与session 简介 2.django操 ...
- 【Django】Django中cookies、session和token实现demo
一.cookies和session HTTP是一种无状态的协议,客户端向服务端发起请求,在通过用户名和密码进行用户认证后,HTTP协议不会记录认证状态,所以用户在下次请求时还是需要再次认证.为了能够保 ...
- django中获取sessionid
之前在django中一直用session处理一些问题,这次想拿到sessionid数据,发现跟以前的想法不太一样: django中的sessionid要通过下面这种方式取到: session_key ...
- 设置cookie存活时间_Django之cookie、session、token
客户端会话技术:cookie 服务端会话技术:session 自定义会话技术:token 一.cookie cookie本身由服务器端生成,通过Response将cookie写到浏览器上,下一次再次访 ...
- Cookie、Session和自定义分页
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066
django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066 1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate( ...
- 15. cookie、session、token
cookie.session.token 一.cookie 1.cookie的由来 2.cookie是什么? 3.cookie的原理 4.Cookie规范 4.django中操作cookie(增删改查 ...
最新文章
- 本地Yum仓库搭建部署
- prim算法构建最小生成树
- python k线顶分型_【缠论】分型、笔的定义及其程序化
- js兼容注意事项--仅供参考
- Flexible 弹性盒子模型之CSS align-items 属性
- 植物大战僵尸不能保存进度
- Mr.J--C语言经典编程100例
- 【Kafka】Kafka Schema Registry 原理
- Linux内核协议栈- 创建socket:__sock_create函数调用关系
- iPhone X 再曝新 Bug:电话无法接听!
- C#联合Halcon 自定义控件鼠标双击响应事件
- 有关学习Android资料的一些网站
- 从机器学习到深度学习
- 各种材料衣服的保养 全面知识分享
- python爬取别人qq空间相册_python+selenium+requests爬取qq空间相册时遇到的问题及解决思路...
- 理解加载class到JVM的时机
- 集成底座项目实施总结
- jquery的事件命名空间详解
- EKL构造点和线的基本用法
- build-essential unmet dependencies 有未满足依赖 解决办法
热门文章
- 如何使用SpingMvc实现省市县三级级联?
- 表锁 行锁 页锁 是什么区别
- C++ std::function怎么用
- kubernetes视频教程笔记 (26)-集群调度-节点亲和性
- Hyperledger Fabric 或 Composer的configtx.yaml配置文件解析
- java 实体类重写排序,对自定义对象进行排序(C++/Java) | 学步园
- python申明变量和赋值_Python入门(二)
- oracle反生异常会回滚吗,Oracle transaction rollback 事务异常回滚问题分析
- php如何处理耗时的任务,PHP如何在请求完毕后继续处理耗时任务
- dp规划之矩阵连乘问题