cookie和session 以及Django中应用
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
cookie和session 以及Django中应用的更多相关文章
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- cookie和session在Django中的应用
1 会话跟踪技术 什么是会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而1008 ...
- Cookie、Session和Django分页
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- COOKIE与SESSION、Django的用户认证、From表单
一.COOKIE 与 SESSION 1.简介 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. ...
- Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)
12.4 Cookie和Session 12.41 cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务 ...
- day 62.3 Django基础八之cookie和session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx ...
- day 73 Django基础八之cookie和session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 x ...
- django中操作cookie与session
cookie 什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的 ...
- Django中cookie&session的实现
1.什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中的字典.随着服 ...
随机推荐
- 依赖、耦合、解耦、控制反转(IOC)、依赖注入(DI)
随着net的深入学习,出现了很多概念性的东西需要理解,现在统一记录一下. 1.依赖:现阶段在任何一个有请求作用的系统,都会出现A类调用B类的情况,这时候A类就依赖于B类,A类和B类存在依赖关系. 2. ...
- Java Web参考资料
Maven Maven学习 Eclipse 使用Maven 构建Web项目的最佳方式:总的来说就是先要修改项目的Project facets来更改Java版本.Servlet版本. 错误Cannot ...
- react高阶组件
高阶组件 为了提高组件复用性,在react中就有了HOC(Higher-Order Component)的概念.所谓的高阶组件,其本质依旧是组件,只是它返回另外一个组件,产生新的组件可以对属性进行包装 ...
- java中拼接两个对象集合
目标: 根据两个list中每条记录的某个属性是否相同来拼接. 1.首先定义一个字符串 String str = "[{\"ITEMID\":2,\"ITEMN ...
- Python-用户登录三次错误锁定
黑名单:blacklist.txt 用户名单:username_password.py # Author:Stephen Yuan # 用户名和密码 username_password = { ', ...
- [sharepoint]根据用户名获取该用户的权限
写在前面 这样的一个场景,客户端请求sharepoint的rest api,但不允许传输用户的密码,使用的是证书认证的方式,但这样所有的用户用的是同一个证书,这样造成的结果就是无法识别该用户是否有操作 ...
- Spark+Scalar+Mysql
包:mysql-connector-java-5.1.39-bin.jar 平台:Win8.1 环境:MyEclipse2015 hadoop-2.7.3.tar.gz + winutils.exe ...
- Vue2.0学习笔记
环境搭建 vue-cli@3 vue-cli@2.X npm i -g @vue/cli 模板语法 文本 <span>Message: {{ msg }}</span> ...
- JOSN转列格式(csv文件)
推荐网站 https://json-csv.com/ 限制1M大小
- sql常用语句备忘录随时更新
一.查询最新的一条数据 SELECT * FROM Table a WHERE NOT EXISTS (SELECT FROM Table b WHERE a.Date>b.Date) 二.查询 ...