标签:class delete 键值对 one 关闭浏览器 没有 意思 flush 由来
HTTP协议是无状态的,意思是客户端的每次请求都是独立的,服务端并不能识别两次请求的发出方是不是同一个客户端.状态是为了保存用户状态,因此出现了cookie和session技术.
类型为"小型文本文件",为了辨别用户身份,进行session跟踪而储存在客户端的数据.
本体是保存在浏览器上的键值对
客户端发送request到服务器-->服务器发送一个httpresponse响应到客户端,其中就包含setcookie的头部-->客户端保存cookie,随后此客户端每次向服务端发送请求时,httprequest请求中就会包含cookie的头部.后端即可对此cookie进行校验.
通过实例化生成一个HttpResponse对象来设置cookie
obj = HttpResponse()
return obj
obj = render()
return obj
obj = redirect()
return obj
obj.set_cookie("whoami","agsol")
通过request
request.COOKIES.get("whoami")
其中,expires专为IE浏览器定制,且两者设置时间单位为秒
obj.set_cookie('k1','v1',max_age=3)
obj.set_cookie('k1','v1',expires=3)
在注销,退出时使用
obj.delete_cookie('key')
在计算机中称为"会话控制".是一种用来记录用户状态的会话保持机制.session保存在服务端.
django中会自动加密,并保存在客户端的键值对
session的工作机制要依赖于cookie
session接收到用户信息之后,会随机生成一个字符串,将随机生成的字符串(session_key)与用户名绑定后存储到本地session_data中,然后将session_key作为cookie的value返回给客户端存储,下一次客户端访问时的请求头中就会带有上次服务端给的session_key,而服务端接收session_key后就可以在自己的本地校验出是否与之前用户是同一用户.
由于session存储在服务端,所以本地要有东西接收,可以使用默认表,在执行django的数据迁移命令时就可以生成一张用于保存session的表.
def set_session(request):
request.session['k1'] = 'agsol'
return HttpResponse('设置成功')
在执行request.session[‘k1‘] = ‘agsol‘
时,发生的事情:
django内部通过内部算法生成一个随机字符串
将生成的数据保存在数据库中,格式如下
将产生的随机字符串也就是session_key返回给客户端,使用sessionid作为cookie的key,让浏览器保存.
request.session.get("k1")
注意:
def set_session(request):
request.session['k1'] = 'jason666'
request.session.set_expiry(10)
return HttpResponse('设置成功')
request.session.set_expiry(value)
def delete_session(request):
request.session.delete() # 客户端 服务端全部删除
# request.session.flush() # 建议使用这个
return HttpResponse("删除了")
delete同时删除cookie和本地django_session中对应数据
flush只删除cookie中的session,保留本地django_session中的数据.
session创建数据,针对的时浏览器,也就是说,统一浏览器生成多个session时会保存在一条数据中
数据库软件
? 关系型,
? 非关系型
文件
内存(缓存)
token是一种无状态的验证方式token由服务端产生,存储在客户端.
使用 token可以减少对对数据库的操作,加强了程序的健壮性
将客户端发送的信息(可以是session或者mac地址),生成一个token,并将token返回客户端.下一次用户携带token访问服务端,服务端就可以通过后端判断验证是否为同一用户访问.
Token完全由客户端管理,可以避开同源策略
Token可以避免csrf攻击
Token可以是无状态的,可以在多个服务间共享
可以通过refresh Token 的方法来保证有效期.
标签:class delete 键值对 one 关闭浏览器 没有 意思 flush 由来
原文地址:https://www.cnblogs.com/agsol/p/11985743.html