cookie和session的操作
sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。服务端在创建了Session的同时,会为该Session生成唯一的sessionId,而sessionId会在随后的请求中会被用来重新获得已经创建的Session;Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有sessionId;当客户端再次发送请求的时候,会将这个sessionId带上,服务器接受到请求之后就会依据sessionId找到相应的Session,从而再次使用之。
单纯jwt的解密校验不需要数据库的参与,而且不需要服务器存储,节省了资源。
# session
from django.contrib.auth import login
# Django中保持登录状态
login(request, user)
# 是否记住登录状态
if not remembered:
参数为0,关闭浏览器清除登录状态
request.session.set_expiry(0)
else:
#记住登录状态 单位为秒
request.session.set_expiry(24*3600*14)
response = JsonResponse({'message})
response.set_cookie('username',user.name,max_age=24*3600*14)
return reponse
# 1.退出
logout(request)
# 2.看情况 删除 用户名
response = JsonResponse({'code': 0, 'ermsg': 'ok'})
response.delete_cookie('username')
return response
# 获取
request.session['key'] # 不存在报错
request.session.get('key', None) # 无值返回None
# 设置
request.session['key'] = 'value'
request.sessino.setdefault('key', 123) # 不存在设置默认值,存在不设置
# 删除某个
del request.session['key']
# 删除当前用户所有session数据
request.session.delete('session_key')
# 清除
request.session.clear()
#获取用户的随机字符串
request.session.session_key
# 删除失效日期小于当前日期的数据
request.session.clear_expired()
#判断随机字符串是否存在session内
request.session.exists('session_key')
# 设置cookie失效时间
request.session.set_expirp(value)
value:整数,该秒数后失效
value:datatime/timedelta,在该时间后失效
value:0 关闭浏览器失效
value:None,依赖全局失效策略