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

时间: 2024-10-10 17:50:56

cookie和session基础以及在Django中应用的相关文章

会话控制:cookie和session基础学习笔记

在多次HTTP连接间维护用户与同一用户发出的不同请求之间关联的情况称为维护一个会话(session) 我们可以简单理解为浏览器的开关. 其实对cookie和session也是主要为curd操作 cookie cookie 之前以字符串的形式保存在客户端 *.txt的格式.google等浏览器现在已经改为二进制存储,相对安全些,HTTP协议是无状态协议,cookie是服务器留在用户计算中的小文件,用来识别用户. 创建cookie setcookie() 函数用于设置cookie. setcooki

Django中cookie和session

cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要"保持状态".因此cookie就是在这样一个场景

转:django中session的实现机制

转:www.jianshu.com 要理解session,首先要搞清楚cookie的概念.由于http是无状态的,服务器不能记住用户的信息状态,因此若由同一个客户端发起的多条请求,服务器不能辨别这些请求来自哪个用户.http无状态的限制为web应用程序的设计带来了许多不便,购物网站中的"购物车"功能就是一个很好的例子,当用户把商品放进购物车后,客户端必须要保存购物车的状态,否则当用户下次浏览网站时,购物车拥有的商品状态便不复存在.客户端和服务器必须有通信的媒介,方便服务器追踪客户端的状

Cookie、Session和Django分页

cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要“保持状态”.因此cookie就是在这样一个场景下诞生.

Django 框架篇(六): Cookie 与 Session

Cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要"保持状态".因此Cookie就是在这样一个场景

Django之cookie and session

会话追踪技术 1 什么是会话跟踪技术我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中.在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束. 在一个会话的多个请求中共享数据

Django之cookie 与session组件

一.会话跟踪技术 1.1 什么是会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中. 在Web中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束. 在一个会话的多个请求中共享数据

Django之Cookie,Session

COOKIE Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要“保持状态”.因此Cookie就是在这样一个场景下诞生.

Django框架进阶7 forms组件(pycharm内置测试环境Python Console), cookie与session操作

forms组件 写一个注册页面 获取用户输入的用户名和密码 用户点击注册发送到后端做用户名密码的校验 用户名中不能包含金瓶mei 不符合社会主义核心价值观 密码不能为空 你个DSB,密码怎么能为空 1.手写获取用户输入的前端页面代码 渲染页面 2.后端获取用户数据并做合法性校验 校验数据 3.将校验之后的结果渲染到前端页面 展示信息 不用forms组件代码: app01/views.py from django.shortcuts import render,HttpResponse # Cre