1、cookie
1、会话技术
2、客户端的会话技术(数据保存在浏览器上
)
3、问题
导致原因:在web应用中,一次网络请求是从request开始,到response结束,跟以后的请求或者跟其他请求没有关系
(导致每次请求之间的数据没有关系(短连接、长链接))
解决:在客户端保留数据(cookie)或者服务端保留数据(session)来建立关系
4、cookie的使用
1、存
格式:response.set_cookie(key,value)
例: response.set_cookie('username',username)
response.set_cookie('password',password)
通过response通过浏览器要保存key,value形式的cookie
2、取
如过浏览器保留了cookie,那么每次请求该服务器的时候,会自动的携带该cookie
格式:request.COOKIES.get(key)
例: username = request.COOKIES.get('username')
password = request.COOKIES.get('password')
3、设置过期时间
默认情况下,关闭浏览器cookie就会过期,有时候我们需要设置过期时间
格式:response.set_cookie(key,value,expirse = 值)
expires = 0 立马过期
expires = None 永不过期
expires = 值 单位是秒
expires = timedelta(days = 值) 表示多少天后过期 (hours = 值) 表示多少小时候过期
例:response.set_cookie('password', password, expires=timedelta(seconds=2))
4、删除
格式:reponse.delete_cookie(key)
例:response.delete_cookie('password')
5、cookie的应用场景
1、保存帐号,密码
2、京东的购物车(不登录也可以添加到购物车)
3、保留用户的浏览信息...
2、session
1、 会话技术
2、服务端的会话技术
3、需要客户端的支持才可以
4、使用
1、存
格式:request.session[key] = value
例:request.session['username']= username
request.session['password']=password
注意:在django中存储了一个session后,django会自动的生成session key,并将session key与数据自动的存储到django_session表中,数据会自动的用base64编码,并会自动让浏览器的cookie存储sessionid(就是session key)
2、取
格式:value = request.session.get(key)
例:username = request.session.get('username')
password = request.session.get('password')
注意:在django中,会自动将cookie中的sessionid拿出来跟数据库中的session key匹配,匹配成功后即可以获取值
3、清除
1、清除对应的cookie
2、del request.session
推荐的3、request.session.flush() 会清除对应的cookie及session
3、MD5—信息摘要—加密
md5可以将任何一个二进制的数据通过数学算法,转换成一个一定长度(128位)的二进制数据
特点:1、结果是唯一的,不可能重复
2、不可逆
作用:1、通常用来加密密码
2、通常用来验证一个数据的完整性
使用md5处理
创建一个md5对象
MD5 = hashlib.md5()
将一个二进制数据进行md5处理,生成一个128位的二进制数据
4位的二进制是一位的十六进制
MD5.update(password.encode('utf-8'))
将二进制结果转换成32位十六进制的结果
password = MD5.hexdigest()
4、生成一个唯一性的字符串
1、自己生成:
唯一的字符串规则:时间戳 + 随机数(很多位) + 公司的域名
mytoken = str(time.time()) + str(random.randint(100000,999999)) + 'www.baidu.com'
2、使用uuid模块
生成一个唯一的uuid
myuuid = uuid.uuid4()
5、编码/解码
编码:将一个数据按照码表转换成二进制的形式 encode
解码:将二进制的数据转换成可视形式的数据 decode
解码的时候码表必须与编码的码表一致
utf-8、gbk、base64
6、加密/解密
1、DES 对称加密
加密的密钥与解密的密钥是同一个密钥
2、RSA 非对称加密
加密的密钥(公钥)与解密的密钥(私钥)不是同一个密钥
3、md5/sha 信息摘要
可以将任何一个二进制的数据通过数学算法,转换成一个一定长度的二进制数据,而该数据不可逆且唯一