cookie和session 以及Django中应用

时间:2021-08-30 14:50:30

cookie和session 以及Django中应用

 

cookie和session机制

cookie和session机制

  cookie机制采用的是在客户端保持状态的方案。作用就是为了解决HTTP协议无状态的缺陷所做的努力。

  session机制采用的是一种在客户端与服务器之间保持状态的解决方案。由于采用服务器端保持状态的方案在客户端也需要保持一个标识,

      所以session机制可能需要借助于cookie机制来达到保存标识的目的。session还提供了方便管理全局变量的方式。

      session 是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分哪个用户的session

cookie和session内容

  cookie内容主要包括:key, value, 过期时间,路径和域。路径和域一起构成了cookie的作用范围。

  cookie的使用是由浏览器按照一定的规则在后台自动发送给服务器的,浏览器检查所有储存的cookie,

  如果某个cookie的作用范围大于等于将要请求的资源所在位置,将cookie附在请求资源的HTTP请求头上发给服务器。

  cookie的生命周期跟过期时间相关,如果不设置过期时间,成为回话cookie,保存在内存中,关闭浏览器窗口,cookie消失。

  如果设置过期时间,浏览器会把cookie写入硬盘,这些cookie仍然有效,直到超过设定的过期时间。

  存在硬盘上的cookie可以在同一个浏览器不同进程间共享,比如两个Chrome窗口。存在内存的,不同浏览器不同的处理方式。

  session内容,服务器使用类似python字典的 key value的形式存储的,存储session方式很多,数据库,缓存,文件,加密cookie,数据库加缓存。

Django中的cookie

  cookie中的一些参数:

    --  max_age=1,  cookie生效的时间,单位是秒。

    --  expires  具体的过期时间

    --  path= “/”  作用路径 写/代表所有的url都可以访问到cookie 可以指定url

    -- domain= None  None代表当前域名  指定哪个域名以及它下面的二级域名(子域名)可以访问这个cookie

    -- secure = False  Https安全相关

    -- httponly=False  限制只能通过http传输 JS无法再传输中获取和修改

  设置cookie以及获取cookie

# 设置cookie
# 普通设置方式
response_obj.set_cookie("key", "value",expires="time",path="/") # 加盐
# 加盐需要在服务端进行解盐才能查看
response_obj.set_signed_cookie("k","v",salt="gaoxin")
# 获取cookie
# 普通
cookies = request.COOKIES.get("key")
# 加盐
cookies = request.get_signed_cookie("k", salt="gaoxin")

  cookie + session 的工作原理

    -- 1 当用户来访问服务器时,服务端生成一个随机字符串。

    -- 2 当用户登录成功后,把 {sessionID:随机字符串} 加到cookie里发送给浏览器用户。

    -- 3 服务器以发送给客户端cookie中的随机字符串为键,用户信息做值,保存用户信息

Django中的session

  django中session中一些方法:

     注意 :request.session['name'] = 'gaoxin'  默认隐含了通过sessionID找到用户信息那一步,删除也是如此。

# 获取,设置,删除session中数据
# 获取
request.session['key']
request.session.get('key', None) # 不报错 设置一个默认值
# 设置
request.session['key'] = "value"
request.session.setdefault('key', "value")# 存在则不设置
# 删除
del request.session['key'] # 获取所有的键,值,键值对
request.session.keys()
request.session.values()
request.session.items()
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems() # 用户session的随机字符串
request.session.session_key # 清除数据库过期的session
request.session.clear_expired()
# 检查用户session的随机字符串是否在数据库中
request.session.exists("session_key")
# 清除当前用户的所有session数据
request.session.delete("session_key")
# 设置session的过期时间
request.session.set_expiry(value)
# 如果value是个整数 session会在这些秒后失效
# 如果是个datetime类型的 就会在这个时间后失效
# 如果value是0,用户关闭浏览器session就会失效
# 如果value是None,session就会依赖全局session失效策略

  session的配置文件

# 引擎 (存储位置)
SESSION_ENGINE = "django.contrib.session.backends.file"
SESSION_ENGINE = "django.contrib.session.backends.cached_db"
# 缓存文件路径
SESSION_FILE_PATH = "文件路径" # cookie保存在浏览器上的key 即 sessionID = 随机字符串
SESSION_COOKIE_NAME = "gaoxin" # cookie 保存的路径
SESSION_COOKIE_PATH = '/' # cookie保存的域名
SESSION_COOKIE_DOMAIN = None # 是否https传输cookie
SESSION_COOKIE_SECURE = False # 是否只支持http传输
SESSION_COOKIE_HTTPONLY = True # cookie失效日期为600000秒 默认1209600秒
SESSION_COOKIE_AGE = 600000 # 是否关闭浏览器使session过期
SESSION_EXPIRE_BROWSER_CLOSE = False # 如果设置成True 会在每次请求服务器的时候会以新的请求时间向后延期过期时间
# 淘宝一直逛就不会登出 不刷新页面过段时间就自动登出
SESSION_SAVE_EVERY_REQUEST = True
 
 

 

 
Copyright ©2018 GGG_XXX

cookie和session 以及Django中应用的更多相关文章

  1. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  2. cookie和session在Django中的应用

    1 会话跟踪技术 什么是会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而1008 ...

  3. Cookie、Session和Django分页

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  4. COOKIE与SESSION、Django的用户认证、From表单

    一.COOKIE 与 SESSION 1.简介 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. ...

  5. Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)

    12.4 Cookie和Session 12.41 cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务 ...

  6. day 62.3 Django基础八之cookie和session

    Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx ...

  7. day 73 Django基础八之cookie和session

      Django基础八之cookie和session   本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 x ...

  8. django中操作cookie与session

    cookie 什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的 ...

  9. Django中cookie&session的实现

    1.什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中的字典.随着服 ...

随机推荐

  1. command shell 的知识整理

    cmd 也是shell  windowns的外壳一种. 查看文件和文件夹 dir mkdir *** 创建文件夹 rd *** 删除文件夹(应该有参数的,递归之类的)CTR+C 终止命令 cd> ...

  2. Mac OS 解压缩软件:StuffIt Expander

    由于今天下载一份文档,是在rar压缩包里,mac os系统默认是不支持RAR格式文件的解压的.在app store里找了下,找到一个免费的解压软件,名字叫:StuffIt Expander. 该软件由 ...

  3. virtual析构函数的作用

    C++ Primter中讲“在 C++ 中,基类必须指出希望派生类重写哪些函数,定义为 virtual 的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数”. 析构函数是为了在 ...

  4. php单例模式在数据库连接中的使用

    今天同事问到一个关于单例模式在php中是否有用的问题,我们知道,单例的目的是为了避免重复生产相同的对象,一般情况在数据库连接中,为了避免多次拿到相同数据库连接,使用到单例模式,我们来看一下单例模式数据 ...

  5. python3 集合set

    set是一种集合的数据类型,使用{}表示 集合中元素是无序的,并且不可重复,集合最重要的作用就是可以去重 set是不可哈希的,set中的元素必须是可哈希的 可以切片,可以迭代 交集.并集.差集.对称差 ...

  6. 06 元祖 字典 集合set

    元组 定义: ti=() print(ti,type(ti)) 参数:for可以循环的对象(可迭代对象) t2=tuple(") # ('1', '2', '3') <class 't ...

  7. 《剑指offer》第四十四题(数字序列中某一位的数字)

    // 面试题44:数字序列中某一位的数字 // 题目:数字以0123456789101112131415…的格式序列化到一个字符序列中.在这 // 个序列中,第5位(从0开始计数)是5,第13位是1, ...

  8. 【C&num;】解析C&num;中JSON&period;NET的使用

    目录结构: contents structure [-] JSON.NET简介 Serializing and Deserializing JSON Json Convert Json Seriali ...

  9. DataSnap Server HTTP json格式修改 返回图片

    DataSnap Server HTTP json 格式修改  http://127.0.0.1:8080/datasnap/rest/TServerMethods1/EchoString/hello ...

  10. 利用HBuilder打包前端开发webapp为apk

    转载 标签: apk / 打包 / vue 现在的前端开发可谓是,百花齐放啦,什么都可以做,只有想不到没有做不到的,今天就简单的介绍用vue,ng或者是react开发的单页应用如何打包为apk,在移动 ...