Cookie:
特性:
1.客户端会话技术(数据存储在客户端),
2.以key-value的形式进行存储,
3.cookie的操作都是通过Response来实现的
4.典型场景:购物车、登录信息
5.支持过期信息
6.清除策略:默认关闭浏览器是cookie自动清除或
配置Cookie过期时间:
max-age=0 关闭就失效
max-age=None 永久有效
max-age = int 单位秒
expires 过期时间,和max-age功能基本一致
@勒令客户端(通过cookie)自己将状态保存起来,过期时间为60秒:
Session:
特性:
1.服务端会话技术
2.session依赖于cookie:将session数据库中的session_key当做session_id,存储在cookie中
3.session数据存储子数据库中,并做了基本安全处理(base64)
@让服务端通过session保存用户状态:
Token:
特性:
1.服务端会话技术
2.相当于手动实现的session
3.依赖于cookie
4.值应该是唯一的:要通过特定算法保证唯一/时间/ip/域名/网卡mac/随机数
@将用户状态存储在token中,让客户端持有一个token,并将token保存在某个表中
特性:
1.客户端会话技术(数据存储在客户端),
2.以key-value的形式进行存储,
3.cookie的操作都是通过Response来实现的
4.典型场景:购物车、登录信息
5.支持过期信息
6.清除策略:默认关闭浏览器是cookie自动清除或
配置Cookie过期时间:
max-age=0 关闭就失效
max-age=None 永久有效
max-age = int 单位秒
expires 过期时间,和max-age功能基本一致
@勒令客户端(通过cookie)自己将状态保存起来,过期时间为60秒:
resp=HttpResponse()
resp.set_cookie('uname',uname,max_age=60*1)
@获取保存在客户端的用户状态:
uname=request.COOKIES.get('uname',None)
@删除保护在客户端的用户状态:
resp.delect_cookie('uname')
Session:
特性:
1.服务端会话技术
2.session依赖于cookie:将session数据库中的session_key当做session_id,存储在cookie中
3.session数据存储子数据库中,并做了基本安全处理(base64)
@让服务端通过session保存用户状态:
request.session['uname']=uname
request.session['upwd']=upwd
@从服务端获取用户状态:
uname=request.session.get('uname',None)
@删除服务端session:
del request.session['uname']
request.session.flush()
Token:
特性:
1.服务端会话技术
2.相当于手动实现的session
3.依赖于cookie
4.值应该是唯一的:要通过特定算法保证唯一/时间/ip/域名/网卡mac/随机数
@将用户状态存储在token中,让客户端持有一个token,并将token保存在某个表中
user = User.objects.filter(uname=uname).first()
resp=HttpResponse()
token=uuid.uuid4()
resp.set_cookie('token',token)
user.token=token
user.save()
@从token中获取用户状态:
utoken = request.COOKIES.get('token',None)
@勒令客户端删除自己cookie中的token
resp.delect_cookie('token')