Views(四)会话技术

一、应用场景
1)用于服务器能够识别客户端(身份认证
2)解决Web开发的短连接问题,生命周期从Request开始,到Response结束
二、种类
1cookie
一种客户端会话技术,将数据以键值对形式存储在客户端
基本过程:
1.用户发出登陆请求
2.登陆成功后,生成cookiecookie保存在浏览器
3.再次登陆时,用cookie的值验证用户名、密码
4.通过验证后成功登陆
2session
一种服务端会话技术,存储在服务器中,默认使用BASE64做数据安全Django中默认过期时间为14天。session依赖于cookie(将session_keycookie形式存储在客户端)
基本过程:
cookie相似,不同的是第23步,
1.~
2.认证成功后生成session,并保存到数据库且将数据库表中的session_keycookie形式存储到浏览器
3.再次请求时,用携带的session与数据库中session_data做验证用户名和密码
4.~
 
*3token
服务端会话技术,可以理解为一种自定义的session(也是将数据存储在数据库中,但是不需要专门的表来存放;不同的是session是django自动存储到服务端,而token不是)。在web开发中,使用起来和session基本一致。在移动端或者客户端开发中,通常以json形式传输。主要应用于移动端或客户端(不支持cookie的设备)
基本过程:
1.用户通过用户名和密码发送请求。
2.服务器端程序验证正确性。
3.服务器端程序返回一个带签名的token 给客户端。
4.客户端储存token,并且每次访问API都携带Token到服务器端的。
5.服务端只需验证token,校验成功则返回请求数据,校验失败则返回错误码。
4cookiesessiontoken对比
-cookie使用更简洁,服务器的压力较小。但数据相对不安全
-session数据相对安全,但服务器需要维护。需要一张专门的表(django_session)用来存放session信息。随着用户请求越来越多,服务器的内存开销也会越来越大
-token拥有session的所有优点,维护相对麻烦,支持更多终端(web,移动端,客户端)。与session不同的是不需要将token信息存放在服务器中token可以与账户密码存放在一起可以)
 
三、cookie
cookie默认是不支持中文的,可以通过base64编码解码对中文字符进行cookie的存储与读取
1.通过加盐生成cookie
一种加密方式。一般的加密方式由于加密规则固定,很容易被破解,安全系数不高。但是密码加盐里包含随机值加密方式。随机值是电脑随机产生的,然后按照加密方式生成一串字符串保存在服务器。
-设置加盐cookieHttpResponse()的方法):set_signed_cookie('key', 'value', 'salt_name')
-取得加盐cookieHttpResponse()的方法):get_signed_cookie('key', salt='salt_name')
 
在web中可以看到原来的值被编码成“乱码”的形式
 
2.删除cookie
由于cookie是存储在浏览器中的,所以用浏览器的工具删除,这里不做说明
 
四、session
Django中将session存储在数据库中django_session表中),过期时间默认为14
 
1.生成session
-设置sessionrequest的方法):request.session['key'] = value
-取得sessionrequest的方法):request.session.get('key')
 
web中将session_key存储在cookie
 
2.删除session
cookie不同,session存储在服务端,所以删除只能在服务端:request.session.flush()删除session和浏览器的sessionid
(只删除cookie或者只删除session,会出现“脏数据”)
 
*五、token
1.生成token
1)这里采用函数生成token的方法
 
2)将token保存就到数据库
 
2.token验证
再次访问时,带有token参数。只需验证token即可,不需要使用用户名密码来验证(每次登陆token都不一样,token主要用于本次登录的子页面的验证
(用GET方式获取参数)
 

猜你喜欢

转载自www.cnblogs.com/xiaoqichaoren/p/12942148.html