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. DNS主从配置详解

    实验环境 主服务器:192.168.138.200 从服务器:192.168.138.201 bind安装 安装很简单,执行以下命令即可: yum install -y bind 先看一下bind的版 ...

  2. PhpAdmin支持登录远程数据库服务器

    转载:http://www.cnblogs.com/andydao/p/4227312.html 该数据,百度搜不到,Google1分钟搞定 一.如何设置phpMyAdmin自动登录? 首先在根目录找 ...

  3. 自己动手,丰衣足食!Python3网络爬虫实战案例

    本教程是崔大大的爬虫实战教程的笔记:网易云课堂 Python3+Pip环境配置 Windows下安装Python: http://www.cnblogs.com/0bug/p/8228378.html ...

  4. SqlDbx 个人版本使用指定的instant client

    set Oracle_Home=D:\Toolkit\Oracle kits\instantclient_x86 set TNS_ADMIN=%Oracle_Home% set NLS_LANG=SI ...

  5. ros6.0的包转发图解

    原文: https://wiki.mikrotik.com/wiki/Manual:Packet_Flow_v6 Overview Diagram Examples Ipsec Encryption/ ...

  6. activity--生命周期总结

    22.Android禁止屏幕旋转 & 旋转屏幕时保持Act内容? 21.旋转屏幕Act执行的生命周期方法? 12.ActA与 ActB互相跳转生命周期情况? 11.Act的生命周期? ==== ...

  7. 为运行Microsoft Dynamics CRM 异步处理服务指定账户没有性能计数器权限

    CRM 2016 安装 为运行Microsoft Dynamics CRM 应用程序指定账户没有性能计数器权限 为运行Microsoft Dynamics CRM 异步处理服务指定账户没有性能计数器权 ...

  8. leetCode27.移除元素

    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  9. android 开发 View _12_ 用Canvas 绘制一张图片(博客中演示用Canvas画验证码图片)

    package net.yt.yuncare.widgets; import android.graphics.Bitmap; import android.graphics.Canvas; impo ...

  10. Oracle不能并行直接添加主键的方法:先建唯一索引后建主键

    环境:Oracle 11.2.0.3 需求:生产一张表由于前期设计不当,没有主键.现需要添加主键,数据量很大,想并行建立. 1.直接添加,提示ora-3001:未实施的功能;只能单线程建立主键 SQL ...