07flask中session及cookie的用法。
一,基本概念。
1,session的概念。
session和cookie的作用有点类似,都是为了存储用户相关的信息。不
同的是,cookie是存储在本地浏览器,而session是存储在服务器。存
储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有
一定的弊端,就是会占用服务器的资源,但现在服务器发展至今,一些
session信息还是绰绰有余的。
使用session的好处:
1,敏感数据不是直接发送回浏览器,而是发送回一个“session_id”,服
务器将“session_id”和敏感数据做一个映射存储在“session”(在服务器)
中,更加安全。
2,“session”可以设置过期时间,也从另外一方面保证了用户的账号安全。
2,cookie的概念。
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接
后并且登陆成功后,第二次请求服务器依然不能知道当前请求是哪个
用户。cookie的出现就是为了解决这个问题,第一次登陆后服务器返
回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户
发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自
动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户
是哪个了。cookie存储的数据量有限,不停的浏览器有不同的存储大
小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。
3,session及cookie结合使用。
cookie和session结合使用:
web发展至今,cookie和session的使用已经出现了一些非常成熟的方案。
在如今的市场或者企业里,一般有两种存储方式。
1,存储在服务器:通过cookie存储一个session_id,然后具体的数据则
是保存在session中。如果用户已经登录,则服务器会在cookie中保存一
个session_id,下次再次请求的时候,会把该session_id携带上来,服务
器根据session_id和session库中获取用户的session数据。就能知道用户
到底是谁,以及之前保存的一些状态信息。这种专业术语叫做sever side
session。
2,将session数据加密,然后存储在cookie中。这种专业术语叫做client
side session。flask采用的就是这种方式,但是也可以替换成其他形式。
4,flask中session及cookie的不同。
flask中session工作机制(和上述概念有点区别):
1,把敏感数据经过加密后放入“session”中,然后再把“session”存放在“
cookie” 中,下次请求的时候,再从浏览器发送过来的“cookie”中读取
“session”,然后再从“session”中读取敏感数据,并进行解密,获取最终的
用户数据。
2,“session”可以设置过期时间,也从另外一方面保证了账号安全。
3,安全是相对的,把“session”放在“cookie”中,经过加密,也是比较安全的。
二,具体操作
1,session写入。session的设置和字典一样,注意:记住设置SECRET_KEY,它的作用相当于“盐”
from flask import Flask,session
import config app = Flask(__name__)
app.config.from_object(config) @app.route('/')
def hello_world():
session['username'] = "zhiliao"
return 'Hello World!' if __name__ == '__main__':
app.run() import os
SECRET_KEY =os.urandom()
经过运行后,结果为:内容经过SECRET_KEY撒盐后变为一长串东西。
2,session读取。
# 读取session
@app.route('/get/')
def get():
# 两种方法
# ,session['username']
# ,session.get('username')
return session.get('username')
3,session删除
@app.route('/')
def hello_world():
session['username'] = "zhiliao"
return 'Hello World!' # 读取session
@app.route('/get/')
def get():
# 两种方法
# ,session['username']
# ,session.get('username')
return session.get('username') @app.route('/delete/')
def de():
print(session.get('username'))
session.pop('username')
return "sss"
注意:先执行http://127.0.0.1:5000/才会先生成session,后面才能删除(执行http://127.0.0.1:5000/delete/)
不然没有session怎么删。
4,清除session中的所有键值对。
@app.route('/clear/')
def clear():
print(session.get('username'))
session.clear() #嗲括号
print(session.get('username'))
return "aaa"
三,设置过期时间。
@app.route('/')
def hello_world():
session['username'] = "zhiliao"
session.permanent = True
return 'Hello World!'
不设置的话关掉网页就没了,设置永久的话最长为一个月时间。
常规的天数设置:
from flask import Flask,session
import config
from datetime import timedelta app = Flask(__name__)
app.config.from_object(config)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=) #2 @app.route('/')
def hello_world():
session['username'] = "zhiliao"
session.permanent = True #这句话不加的话就不会执行#2代码
return 'Hello World!'
07flask中session及cookie的用法。的更多相关文章
- yii2.0框架中session与cookie的用法
我们在开发项目中南面使用到session给和cookie,那么在yii中有他自己的规则 如下案例: session使用 function actionS1(){ echo $t ...
- PHP中Session和Cookie的探究
一.Session (1)Session的由来以及介绍 Session:在计算机中,尤其是在网络应用中,称为“会话控制”,生存时间为用户在浏览某个网站时,从进入网站到关闭这个网站所经过的这段时间,也就 ...
- PHP中session和cookie的区别
这个话题无论是系统运维还是PHP开发人员面试时会经常遇到,所以这里也进行一些总结和归纳,session和cookie的具体理论网上比较大,大家googel下均可;系统运维注意区分下session(会话 ...
- Session和Cookie的用法及区别
1. Session.Cookie是什么 1.1 概念理解 要了解session和cookie是什么,先要了解以下几个概念. 1.1.1 无状态的HTTP协议 协议:是指计算机通信网络中两台计算机之间 ...
- webform中Session和Cookie对象的用法
Session: Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web页之间 ...
- Django中的session于cookie的用法
1.cookies 1.django 中使用 cookies 1.设置cookies的值(将数据保存到客户端) 语法: 响应对象.set_cookie(key,value,expires) key:c ...
- php中session和cookie
cookie 每次请求页面的时候进行验证,如果用户信息存储在数据库中,每次都要执行一次数据库查询,给数据库造成多余的负担.cookie可以被修改的,所以安全系数太低. session是存储在服务器端面 ...
- 简单操作django中session和cookie
cookie 1.会话技术 2.客户端的会话技术( 数据库保存在浏览器上) 3.问题导致原因: 在web应用中,一次网络请求是从request开始,到response结束,跟以后的请求或者跟其他请求没 ...
- php中session和cookie的使用及区别
1.cookie的使用 什么是 Cookie? cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 P ...
随机推荐
- (Python3 自定义函数实现数字金字塔 代码
def kzkz(ceng): for i in range(1,ceng+1): print(" "*(ceng-i),end='') n=i while(n>=1): p ...
- ultraEdit软件比较两个文件内容的不同处
1.软件名称为:UltraEdit ,安装并打开软件; 软件图标: 打开软件如图所示: 2.点击导航图标,蓝色上面有Uc图标,该图标名称为“比较文件” 如图位置: 3.弹出框,根据文件路径选择好比较的 ...
- centos7.2 下 部署单节点redis 3.2.5
#tar -xvf redis.3.2.5.tar.gz –C /usr/local/ #cd /usr/local/ #mv redis.3.2.5 redis #cd redis #make &a ...
- 分布式系列九: kafka
分布式系列九: kafka概念 官网上的介绍是kafka是apache的一种分布式流处理平台. 最初由Linkedin开发, 使用Scala编写. 具有高性能,高吞吐量的特定. 包含三个关键能力: 发 ...
- P5284 [十二省联考2019]字符串问题
这是一道涵盖了字符串.图论.数据结构三个方面的综合大题. 把这道题放在D1T2的人应该拖出去打 前置芝士 首先,您至少要会topsort. 其次,如果您只想拿个暴力分,字符串Hash就足够了:如果您想 ...
- 20175204 张湲祯 2018-2019-2《Java程序设计》第九周学习总结
20175204 张湲祯 2018-2019-2<Java程序设计>第九周学习总结 教材学习内容总结 -第十一章JDBC和MySQL数据库要点: 1.下载MySQL和客户端管理工具navi ...
- find your present (2) hdoj 2095
/* author:谦智 find your present (2) hdoj 2095 法一:用暴力 法二:用map 法三: 符号是^. 异或是个位运算符号,具体是怎么操作的请百度,这里有个特性使得 ...
- Groovy Closure简介
什么是闭包(Closure) 在Groovy中,闭包是一段匿名的代码段,它可以有参数,返回值,并且能够赋值给一个变量.闭包中使用的变量可以是在闭包外部定义的,也可以是在闭包内部定义的.
- mathJax基础语法-0基础开始,(这是网上抄来的如果有权限和版权问题联系本人处理,仅供学术参考)
- newSoft
Email:kefu007@vip.qq.com CADソフト Siemens PLM NX 1847 (64ビット) 日本語版 KeyCreator Ver.15.5 (64ビット)日本語版 MYP ...