cookie、session、token

Cookie和Session

http协议不保存用户状态(信息)
Cookie和Session都是为了能够保存用户信息

Cookie:

本质:保存在浏览器上的键值对
用途:标识当前用户信息
cookie是服务端设置的,浏览器可以选择禁用

Session:

本质:保存在服务器上的键值对
用途:记录当前用户信息
session其实也是基于cookie工作的
为了数据更加安全,给浏览器存一个随机字符串,将用户信息存在服务端,
sessionid:‘随机字符串’
用户在访问的时候,拿着这个随机字符串来后端进行匹配

token

通过加密算法产生token给客户端(token只在客户端存)
通过解密算法验证token(安全认证)
flask中会把session[‘name’]=value 的值转换成token丢进cookie中,再次请求的时候会携带上cookie进行访问,django中的jwt不会。


Cookie部分

获取cookie

request.COOKIES['key']
request.COOKIES.get('key')  #推荐用这种方法,如果用 [ ] 取值的话,key不存在的时候会报错
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)

设置Cookie

问题:django返回的信息都是什么对象?
– HttpResponse对象

return render()
return HttpResponse()
return redirect()

rep = HttpResponse(...)
rep = render(request, ...)
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密盐', max_age=None, ...)
return rep

views.py
login为登陆页, index为跳转页面,在获取login中携带名为键为"name"的cookie后,再实现跳转,否则就返回login页面return render(requests,'login.html')图中截图不全。
在这里插入图片描述

给cookie验证加一个装饰器例子:index只有登陆了才能访问,否则跳转login,先登陆
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
34.25 cookie操作

删除Cookie

def logout(request):
    rep = redirect("/login/")
    rep.delete_cookie("user")  # 删除用户浏览器上之前设置的usercookie值
    return rep

Session部分

设置seesion

request.session['name'] = 'jack'

注释:
1.内部自动生成一个随机字符串
2.服务端默认的session表内存入数据
表头 随机字符串 value time
asasfsdf {k:v,…} django默认session超时时间为14天
3.将随机字符串写到浏览器的cookie中
sessionid:随机字符串

文章参考:https://www.cnblogs.com/dominic-Ji/p/10718365.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值