cookie与session

cookie与session

介绍

HTTP协议四大特性
	1.基于请求响应
    2.基于TCP、IP作用于应用层之上
    3.无连接
    4.无状态

基于HTTP协议的通行无法记录客户端状态,但现在很多软件都需要记录用户的状态,为了解决这个问题,发明了cookie、session等一系列的技术

cookie:保存在客户端浏览器上面的键值对数据
# 当用户登录成功后,浏览器保存用户的关键信息,以后访问的时候浏览器自动发送关键信息从而实现身份识别,关键字数据直接保存在浏览器上不安全

session:保存在服务器上面的键值对数据(数据类型不固定)
# 当用户登录成功之后,服务器返回给浏览器一个随机字符串,之后访问都将随机字符串发送给服务端,服务端内做验证

# session需要依赖于cookie才可以工作
# 客户端浏览器可以保存服务端发送过来的cookie数据,也可以拒绝

cookie操作

视图函数返回的HttpResponse对象
return HttpResponse()
return render()
return redirect()
...
obj = HttpResponse()
return obj
obj = render()
return obj
obj = redirect()
return obj

# 用户登录
设置cookie
   obj = HttpResponse("登录成功")
   obj.set_cookie('name','jason')
获取cookie
   request.COOKIEs.get('name')
删除cookie
   obj.delete_cookie('name')
max_age=None, 设置超时时间(有效时间)

session操作

session设置  # 当做字典来操作
	request.session['name'] = 'jason' 
    # 1.自动产生一个随机字符串
    # 2.将随机字符串和数据存入django_session表中
    # 3.将随机字符串返回给客户端

session读取
	request.session.get('name')
    # 1.客户端请求获取随机字符串
    # 2.拿着随机字符串去django_session表中对比
    # 3.如果对比成功就获取对应的数据并解析放到request.session中
    
# 删除当前会话的所有session数据
	requset.session.delete()  # 只会删除客户端浏览器的数据
# 删除当前会话数据并删除会话的cookie
	request.session.flush()  # 客户端浏览器和服务端都删除

# Django session默认的过期实际那为14天,可以认为修改
# 设置会话session和cookie的超时时间
request.session.set_expiry(value)
	- 如果value是个整数,session会在些秒数后失效。
	- 如果value是个datatime或timedelta,session就会在这个时间后失效
	- 如果value是0,用户关闭浏览器session就会失效。
	- 如果value是None,session会依赖全局session失效策略。

posted @ 2021-06-30 20:43  zheng-sn  阅读(21)  评论(0)    收藏  举报