Flask笔记:session
session与cookie:
cookie是一项浏览器的技术,而不是服务器的技术,服务器端是无法直接操作cookie的,只能通过返回Response响应告诉浏览器怎么操作cookie。而session则更像是一种解决方案,一种在服务器端存储授权信息的解决方案,不同的语言,不同的框架对于session的实现方式可能都是不同的,对session的理解和操作可能都不一样。同时,session更是一种解决cookie安全隐患的方式,用户名和密码等信息都是存放在session中的,而session内容是无法被用户直接看到的。
session存储:
服务器生成的session信息既可以存放在服务器中(cookie中就只有session_id),也可以加密后存放在cookie中(浏览器拿到cookie后也不能知道加密的session内容), Flask就是采用的第二种机制。
操作session:
使用`from flask import session`对象,session对象就相当于一个字典,操作session时可以像操作字典一样去操作它,如:session['username'] = 'xiaoming',session.get('username'),session.pop('username'),session.clear()等。代码中导入此session对象后直接操作使用即可,它会自动加入cookie中并返回给浏览器,也会自动从访问的请求中的cookie中提取出来,所以不需要我们手动将它加入到Response的cookie中,也不需要手动从request的cookie中获取出来。
session加密:
使用session时,SECRET_KEY是必须配置的 ,这个值用来加密session内容然后返回给浏览器。如:`app.config['SECRET_KEY'] = os.urandom(24)`,即24位的随机数。
session有效期:
session默认有效期和cookie一样,直到浏览器回话结束。可以通过设置`session.permanent=True`来设置自定义的有效期,而此时默认有效期为31天,如果配置了PERMANENT_SESSION_LIFETIME,则以此配置项的值为准,此配置项的类型为`from datetime import timedelta`类型。如:`app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)`,即有效期为7天。
简单示例:
import os
from datetime import timedelta from flask import Flask, session app = Flask(__name__)
# 使用session必须配置此SECRET_KEY,用于session的加密
app.config['SECRET_KEY'] = os.urandom(24)
# 没有配置此项时,默认为31天,配置后设置session.permanent=True时,以此配置项的值为准。
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) @app.route('/')
def hello_world():
# 此session对象其实就相当于一个字典,可以当做字典来使用
# 此处设置了session后,会自动将此session内容加密后放入cookie中返回给浏览器
# session在浏览器cookie中的存放形式为:在cookie中添加一个“键值对”,key为“session”,value为session内容加密后的字符串。
session['username'] = 'xiaoming' # 设置session的持久化,默认为False,即有效期至浏览器回话结束,设置为True表示有效期为31天
session.permanent = True return 'Hello World!' @app.route('/username/')
def get_username():
# 获取session信息
username = session.get('username') return username or '没有用户登录!' @app.route('/delete_user/')
def del_user():
# 删除session信息
username = session.pop('username') return '{}成功删除!'.format(username) if username else '删除失败!' if __name__ == '__main__':
app.run(debug=True)
Flask笔记:session的更多相关文章
- flask笔记(三)Flask 添加登陆验证装饰器报错,及解析
Flask 添加登陆验证装饰器报错,及解析 写这个之前,是想到一个需求,这个是关于之前写Flask笔记(二)中的一个知识点,路由相关 需求为 : 有一些页面必须是登陆之后才能访问的,比如Shoppin ...
- Flask的session——关于写扩展所学习到的
这两天端午节.趁着端午节没事干,写了个flask的扩展--flask-RedisSession 在flask中使用该扩展可以让你借助redis数据库轻松获得server-side session. 这 ...
- Flask的session使用
由于http是无状态保存的协议,session可以看作不同请求之间保存数据的一种机制.flask的session是基于cookie的会话保持. 流程 当客户端进行第一次请求的时候,客户端的HTTP r ...
- FLASK 的Session和MoudelForm插件
falsk是小而精的框架,但是热度高, 所有很多爱好者提供了很多扩展插件 功能强大,美而不足的就是兼容稳定性有时候不太好,不过大部分还是很可以的 Flask-Session flask内置sessio ...
- 第六篇 flask中session
Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 Flask 中 session 的使用 1. Flask 中 session 是 ...
- Flask里面session的基本操作
#session是依赖于flask的session模块 #如果想使用session模块,在配置里必须定义sessionkey from flask import Flask,session #建立对象 ...
- flask 的session
python的flask操作设置.获得与删除session 首先讲一下Python的flask中session与cookies的关系,session是储存在服务器中的,cookies是储存在浏览器本地 ...
- Flask之session相关
Flask的session简介 除请求对象之外,还有一个 session 对象.它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使 ...
- flask自定义session
根据内置session原理可以进行session的定制: #!/usr/bin/env python # -*- coding:utf-8 -*- import uuid import json fr ...
随机推荐
- SpringBoot(八) SpringBoot整合Kafka
window下安装kafka和zooker,超详细:https://blog.csdn.net/weixin_33446857/article/details/81982455 kafka:安装下载教 ...
- JS基础语法---函数练习part2---10个综合练习(运用:循环/数组/函数)
练习1:求2个数中的最大值 function getMax(num1, num2) { return num1 > num2 ? num1 : num2; } console.log(getMa ...
- QT5.5+VS2013编译安装QtCharts (ZZ)
环境 1.Windows 10 -x64: 2.MSVC 2013 -x64: 3.Qt5.5.1 -x86 and -x64. 编译过程 准备工作 1.安装ActivePerl 安装过程同一般软件安 ...
- SAP MM 特殊库存之T库存初探
SAP MM 特殊库存之T库存初探 笔者所在的A项目里,销售业务广泛启用了POD功能.VL02N对交货单做了发货过账后物权并没有转移,而是将自有E库存转为一个叫做在途库存的特殊库存里.等到货物到了客户 ...
- Dynamics 365本地部署版本配置OAuth 2 Password Grant以调用Web API
微软动态CRM专家罗勇 ,回复330或者20190504可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 根据官方建议,不要再使用Dynamics 365 Custome ...
- Element-ui中自定义表单校验规则
先看一个场景图: 给一个标签el-tag添加表单的校验,且在内容有了以后关闭校验 看代码: <el-form-item class="baseinfo-tags" label ...
- 前端基础之BOM和DOM操作
目录 BOM和DOM定义 windows对象 windows的子对象 navigator对象 screen对象 history对象 location对象 弹出框 警告框 确认框 提示框 计时相关 se ...
- 钉钉开发第三方H5微应用入门详细教程[ISV][免登流程][授权码][HTTP回调推送][识别用户身份][获取用户信息]
转载请注明原文地址:https://www.cnblogs.com/applerosa/p/11509512.html (by lnexin@aliyun.com 世间草木) 此教程注意点: 适用于第 ...
- 3、mongoDB索引
创建索引: db.imooc_collection.getIndexes() 查看索引情况 db.imooc_collection.ensureIndex({x:1}) 创建索引,x:1代表正向排序, ...
- lua 3 循环
while() do ... end i=10 while(i>0) do print(i) i=i-1 end repeat ... until() i=10 repeat print(i) ...