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. ThreadLocal(线程本地存储)

    1. ThreadLocal,即线程本地变量或线程本地存储. threadlocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的 ...

  2. 漫谈golang设计模式 工厂模式

    工厂模式 意义:创建过程交给专门的工厂子类去完成.定义一个抽象的工厂类,再定义具体的工厂类来生成子类等,它们实现在抽象按钮工厂类中定义的方法.这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下引 ...

  3. Wireshark分析实战:某达速递登录帐号密码提取

    - 准备工作 首先,备好Wireshark,打开,在外网网卡上抓包. 其次,用浏览器访问http://www.yundaex.com/cn/index.php,并在手机上下载安装其APP,找到登录页面 ...

  4. Android框架Volley之:ImageRequest请求实现图片加载

    首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ...

  5. 微信小程序上拉加载——分页

    wxml: <view class="page"> <scroll-view class="imageViewCss_1" scroll-y= ...

  6. Vue实战狗尾草博客管理平台第五章

    本章主要内容如下: 静态资源服务器的配置.学会如何使用静态资源服务器引入静态资源.并给大家推荐一个免费可使用的oss服务器~ 页面的开发由于近期做出的更改较大.就放在下一篇中. 静态资源服务器 静态资 ...

  7. 记录TortoiseGit=>https请求/ssh请求配置

    ssh C:\Program Files\Git\usr\bin\ssh.exe https C:\Program Files\TortoiseGit\bin\TortoisePlink.exe

  8. [20190918]shrink space与ORA-08102错误.txt

    [20190918]shrink space与ORA-08102错误.txt 1.环境:SCOTT@test01p> @ ver1PORT_STRING                    V ...

  9. 我写了个项目,帮你学习HTTP接口测试!

    端午节我写了一个项目,帮助你学习HTTP接口测试. GitHub地址: https://github.com/defnngj/learning-API-test 整个项目基于Flask和 Reques ...

  10. Centos 7+KVM(Windows Server 2008 r2 )

    KVM虚拟机 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度 ...