Cookie与Session

北战南征 提交于 2019-11-30 17:51:49
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表中,也可以存在一个文件当中,或者缓存当中,这个取决于自设定.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!