Django应用cookie和session
标题cookie参数介绍
1、key:cookie键
2、value:cookie值,目前不支持中文
3、max_age:cookie寿命,一个时长,单位秒 60*6
4、expires:过去时间,是一个时间点,和max_age冲突
5、path:cookie起作用的范围
6、domain:起作用的域名
7、secure:是否启用加密方式传输cookie
8、httponly:是否只使用http协议传输cookie
9、samesite:cookie针对是否是当前域名(二级)
设置cookie
1.普通
obj.set_cookie("tile","zhangsan",expires=value,path='/' )
2.加盐
普通cookie是明文传输的,可以直接在客户端直接打开,所以需要加盐,解盐之后才能查看
obj.set_signed_cookie('k','v',salt="zhangsan")
获取cookie
1、普通
request.COOKIES.get('k')
2、加盐
cookies=request.get_signed_cookie('k',salt='zhangsan')
最后给每个视图函数装饰cookie认证功能
def loginValid(fun):
def inner(request,*args,**kwargs):
cookie_email = request.COOKIES.get('email')
cookie_id = request.COOKIES.get('id')
session_email = request.session.get('email')
if cookie_email and cookie_id and session_email and cookie_email==session_email:
return fun(request,*args,**kwargs)
else:
return HttpResponseRedirect('/buyer/login/')
return inner
session应用
1.cookie引入session
cookie看似解决了HTTP(短连接、无状态)的会话保持问题,但把全部用户数据保存在客户端,存在安全隐患,
于是cookie+session出现了!我们可以 把关于用户的数据保存在服务端,在客户端cookie里加一个sessionID(随机字符串),
基于以上原因:cook+session组合就此作古了单单使用cookie做会话保持的方式;
session设置
1.session是以键值对的形式存在的所以设置的时候和字典很像
设置session
request.session['name']= '张三'
获取session
v=request.session.get('name')
删除session
request.session.clear()