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的更多相关文章

  1. flask笔记(三)Flask 添加登陆验证装饰器报错,及解析

    Flask 添加登陆验证装饰器报错,及解析 写这个之前,是想到一个需求,这个是关于之前写Flask笔记(二)中的一个知识点,路由相关 需求为 : 有一些页面必须是登陆之后才能访问的,比如Shoppin ...

  2. Flask的session——关于写扩展所学习到的

    这两天端午节.趁着端午节没事干,写了个flask的扩展--flask-RedisSession 在flask中使用该扩展可以让你借助redis数据库轻松获得server-side session. 这 ...

  3. Flask的session使用

    由于http是无状态保存的协议,session可以看作不同请求之间保存数据的一种机制.flask的session是基于cookie的会话保持. 流程 当客户端进行第一次请求的时候,客户端的HTTP r ...

  4. FLASK 的Session和MoudelForm插件

    falsk是小而精的框架,但是热度高, 所有很多爱好者提供了很多扩展插件 功能强大,美而不足的就是兼容稳定性有时候不太好,不过大部分还是很可以的 Flask-Session flask内置sessio ...

  5. 第六篇 flask中session

    Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 Flask 中 session 的使用 1. Flask 中 session 是 ...

  6. Flask里面session的基本操作

    #session是依赖于flask的session模块 #如果想使用session模块,在配置里必须定义sessionkey from flask import Flask,session #建立对象 ...

  7. flask 的session

    python的flask操作设置.获得与删除session 首先讲一下Python的flask中session与cookies的关系,session是储存在服务器中的,cookies是储存在浏览器本地 ...

  8. Flask之session相关

    Flask的session简介 除请求对象之外,还有一个 session 对象.它允许你在不同请求间存储特定用户的信息.它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名要使 ...

  9. flask自定义session

    根据内置session原理可以进行session的定制: #!/usr/bin/env python # -*- coding:utf-8 -*- import uuid import json fr ...

随机推荐

  1. Linux域名服务DNS

    什么是 DNS DNS 全称是 Domain Name System,大意是域名解析系统,它的职责是把域名翻译成一个一个可以识别的 IP 供不同的计算机设备连接. linux 有关 DNS 解析的配置 ...

  2. 「SAP 技术」SAP BP显示供应商账户组时候的怪现象

    SAP BP显示供应商账户组时候的怪现象 BP事务代码显示某个vendor的时候,笔者发现对于账户组字段选项列表里,不显示当前vendor的account group. 如下图,该供应商的accoun ...

  3. [转]Outlook API

    本文转自:https://www.cnblogs.com/yl153/p/6711519.html 1.Outlook简介 若要从Outlook 外控制Outlook对象,必须在编写代码的工程中建立对 ...

  4. 详细设计文档(final)

    1. 引言 1.1编写目的 本部分旨在阐明编写详细设计的目的,面向读者对象. 本文档主要描述各个模块的细节设计,明确软件的结构与实现过程,分析各个模块,描述模块的功能.性能和结构等方面包括模块接口.调 ...

  5. MYSQL第一课

    rm-rf /* 不能用 完全删除 数据库不能直接存储数据 table 表 DB 数据库 DBMS 数据库操作系统 SQL 结构化查询语言 语句不区分大小写,但字符串常量区区分大小写.建议命令大写. ...

  6. 3. 海思Hi3519A MPP从入门到精通(三 视频输入)

    视频输入(VI)模块实现的功能:通过 MIPI Rx(含 MIPI 接口.LVDS 接口和 HISPI 接 口),SLVS-EC,BT.1120,BT.656,BT.601,DC 等接口接收视频数据. ...

  7. 密度峰值聚类算法MATLAB程序

    密度峰值聚类算法MATLAB程序 凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 密度峰值聚类算法简介见:[转] 密度峰值聚类算法(DPC) 数据见:MATL ...

  8. 初学JavaScript正则表达式(十三)

    字符串方法 search(reg) search()用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串 方法返回第一个匹配结果index,查找不到返回-1 search()不执行全局匹 ...

  9. 第十三周博客作业 <西北师范大学| 周安伟>

    第十三周助教作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 本周点评作业数量无 本周点评困难的博客作业无 本周工作情况制作实验七 团队作业3的千帆图和成绩排名 ...

  10. python 连接oracle -- sqlalchemy及cx_Oracle的使用详解

    python连接oracle -- sqlalchemy import cx_Oracle as orcl import pandas as pd from sqlalchemy import cre ...