Cookie与SessionCookie: cookie是保存在浏览器端的键值对,可以用做登录 1.保存在用户浏览器 2.可以主动清除 3.可以被“伪造” 4.跨域名cookie不共享 5.浏览器设置不接收cookie 服务端设置Cookie v=datetime.datetime.utcnow() + datetime.timedelta(seconds=10) #设置cookie超时时间,系统默认一个时间,也可以用此方式添加一个时间,但以系统默认时间为基准。 obj.set_cookie('k1','v1',max_age=10,expires=v,path="",domain="",secure=False,httponly=False) #max_age时间周期,给某个url生效设置cookie,如果path="/"表示全局生效。 #domain参数:用域名设置访问权限 secure参数(证书访问)执行https的cookie设置等操作的时候用ture httponly参数:(安全)禁止了js使用时获取cookies,仅仅Http网络传输使用 获取cookie数据:.request_COOKIES.get() cookie: 客户端可修改 服务端也可修改 保存在客户端 cookie 应用: 登录认证: 普通的cookie: 敏感信息,不适于放在cookie中,放在数据库中,频繁操作数据库 签名的cookie(可能会被解密): 加密的cookie使用(签名): .set_signed_cookie() 解密数据:request.get_signed_cookie() cookie时做认证的时候,将不敏感的信息放在cookie中,频繁操作数据库Session : session都是request操作的,session是保存在服务器上的键值对,依赖于cookie 1.设置session request.session['key'] = value request.session.setdefault(key,value)#存在就不设置 2. 获取session request.session['key'] request.session.get(key,'') 3. 删除session request.session.pop(key) #删除某一个键值对 del request.session['key'] request.session.delete() #删除所有的session键值对 request.session.flush() #删除所有的session键值对.删除了cookie 4. 设置超时时间 request.session.set_expiry() 5. 清除当前过期的session request.session.clear_expired() 用户session的随机字符串(key):request.session.session_key 将所有session失效日期小于当前日期的数据删除:request.session.clear_expired() 检查用户session的随机字符串 在数据库中是否存在:request.session.exists("session_key") 删除当前用户的所有session数据:request.session.delete() 删除当前用户的数据并删除Session的Cookie:request.session.flush() 确保用户前面的数据不可以再次被用户的浏览器访问,调用函数:django.contrib.auth.logout() 注:设置会话Session和Cookie的超时时间 request.session.set_expiry(value) (1).如果value是个整数,session会在些秒数后失效。 (2).如果value是个datatime或timedelta,session就会在这个时间后失效。 (3).如果value是0,用户关闭浏览器session就会失效。 (4).如果value是None,session会依赖全局session失效策略。 6,流程:浏览器首次访问服务器的时候没有cookie,然后访问服务器,服务器会生成一个session_ID字典, 字典的值为浏览器的数据和cookie(一个随机字符串),然后返回session_ID给浏览器,下次浏览器再来的时 候携带session_ID访问服务器,可以唯一找到对应的服务器存储的session,并且打开这个字典,并从中取到 值做对应校验,检验是否正确能否访问 注:一个session对应一个cookie,并且一个浏览器对应一个session数据 session存在数据库中,默认存在django_session表中,也可以存在一个文件当中,或者缓存当中,这个取决于自设定.
来源:https://www.cnblogs.com/wylshkjj/p/11605951.html