python的flask操作设置、获得与删除session

首先讲一下Python的flask中session与cookies的关系,session是储存在服务器中的,cookies是储存在浏览器本地中,而flask的session与cookies,
session是经过加密保存在cookies中。
在flask中使用session需要先设置secret_key,根据算法加密session信息,来看下flask的session的API:
-----------------------------------
如果你设置了 Flask.secret_key ,你可以在 Flask 应用中使用会话。会话主要使得在请求见保留信息成为可能。 Flask 的实现方法是使用一个签名的 cookie 。
这样,用户可以查看会话的内容,但是不能修改它,除非用户知道密钥。所以确保密钥被设置为一个复杂且无法被容易猜测的值。

SECRET_KEY

from flask import Flask,session
import os app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
# 添加数据到session中
# 操作session的时候 跟操作字典是一样的。
# SECRET_KEY @app.route('/')
def hello_world():
session['username'] = 'zhangsan'
return 'Hello World!' if __name__ == '__main__':
app.run(debug=True)
在flask中操作session有一点需要注意,就是需要设置一个'SECRET_KEY'。可以单独在配置文件中写SECRET_KEY.
SECRET_KEY = 'abc' #写在配置文件里的 app.config['SECRET_KEY'] = 'abc' # 写在main.py 就是app.run()的页面 都是可以的,我这里用了一个随机的变量,而且是24位的。 os.urandom(24) 会从 0-9,a-z A-Z中随机选中24个字符串用做加密session的秘钥。
或者称之为 “盐”。设置好之后执行下代码,然后在谷歌浏览器中找找这个session。在谷歌浏览器中找到设置,然后在最下面找到高级。
设置session过期时间
一般的session都过期时间
如果没有指定session的过期时间,那么默认是浏览器关闭就自动结束,
如果设置了session的permanent属性为True,那么过期时间是31天。
 如何设置过期时间?
from datetime import timedelta
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
session.permanent = True 当我只设置了session.permanent = True时,可以看到浏览器中127.0.0.1中的session过期时间为31天

session 的设置 获取 删除 清空   下面代码示例

from flask import Flask,session
import os
from datetime import timedelta
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)
# 添加数据到session中
# 操作session的时候 跟操作字典是一样的。
# SECRET_KEY @app.route('/')
def hello_world():
session['username'] = 'zhangsan'
# 如果没有指定session的过期时间,那么默认是浏览器关闭就自动结束
# 如果设置了session的permanent属性为True,那么过期时间是31天。
session.permanent = True
return 'Hello World!' @app.route('/get/')
def get():
# session['username'] 如果username不存在则会抛出异常
# session.get('username') 如果username不存在会得到 none 不会报错 推荐使用
return session.get('username') @app.route('/delete/')
def delete():
print(session.get('username'))
session.pop('username')
print(session.get('username'))
return 'success' @app.route('/clear/')
def clear():
print(session.get('username'))
# 删除session中的所有数据
session.clear()
print(session.get('username'))
return 'success' if __name__ == '__main__':
app.run(debug=True)

flask 的session的更多相关文章

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

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

  2. Flask的session使用

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

  3. FLASK 的Session和MoudelForm插件

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

  4. 第六篇 flask中session

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

  5. Flask里面session的基本操作

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

  6. Flask之session相关

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

  7. flask自定义session

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

  8. Flask 进阶session和上下文管理解析

    session的源码流程 将session放置在redis中 安装 pip install flask-session 使用 import redis from flask import Flask, ...

  9. Flask的session

    ### session:1. session的基本概念:session和cookie的作用有点类似,都是为了存储用户相关的信息.不同的是,cookie是存储在本地浏览器,session是一个思路.一个 ...

随机推荐

  1. docker+redis安装与配置,主从+哨兵模式

    docker+redis安装与配置 docker安装redis并且使用redis挂载的配置启动 1.拉取镜像 docker pull redis:3.2 2.准备准备挂载的目录和配置文件 首先在/do ...

  2. WINDOWS SERVER 2008 R2安装指南

    说明:适用于以下几种操作系统: 1.Windows Server 2008 Standard Endition R2 2.Windows Server 2008 Enterprise Endition ...

  3. Ubuntu中Redis的安装与使用

    安装 安装Redis服务器端 apt-get install redis-server 安装完成后,Redis服务器会自动启动,我们检查Redis服务器程序. 检查Redis服务器系统进程 ps -a ...

  4. entry.define编程思路

    0.lua将文字传给场景脚本. 1.场景脚本将pattern.define文件中的PAT当作子弹(水泡弹,带颜色) 2.用户的问题作为客户端的请求,发送给服务器端 3.服务器端接受客户端的问题请求 4 ...

  5. 两种ps切图方法(图层/切片)

    两种Ps切图方法 一.      基础操作: a)    Ctrl++ 放大图片,ctrl - -缩小图片 b)    按住空格键space+,点击鼠标左键,拖动图片. c)    修改单位,点击编辑 ...

  6. PHP适配器模式

    [IDatabase.php] <?php /** * 适配器模式 * 可以将不同的函数接口封装成统一的API * 应用举例1:数据库操作 mysql/mysqli/pdo * 应用举例2:缓存 ...

  7. 利用 PorterDuff 动态改变资源色值,缩减安装包大小

    利用 PorterDuff 改变资源原有色值,从而实现只需要一个资源文件,就可以表示几种不同的状态,如在线或者离线等等 public Drawable colorDrawable(Resources ...

  8. (转)Geth控制台使用及Web3.js使用实战

    在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3.Geth 控制台(REPL)实现了所有的web3 API及Admin API,使用好 Geth 就是必修课.结合Geth命令用法阅 ...

  9. java实现的加密解密

    void encode(File enfile, File defile) throws Exception { String Algorithm = "DES"; byte[] ...

  10. jenkins 常用插件和配置项介绍和使用

    jenkins 上搜索不到的插件可以在如下地址下载: http://updates.jenkins-ci.org/download/plugins/ 1.Notification Plugin 介绍: ...