admin管理员组

文章数量:1642344

1、什么是seesion
session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。
2、配置SECRET_KEY
因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。配置方法一般有两种。
(1)新建一个config.py的文件配置secret_key
config.py

SECRET_KEY = 'XXXXXXXXX'

然后在主运行文件里面添加config文件里面的内容。
main.py

# encoding: utf-8

from flask import Flask,session
import config

app = Flask(__name__)

(2)直接在主运行文件里面配置。配置config的时候也是和操作字典是一样的 。
main.py

from flask import Flask,session
import os

app = Flask(__name__)
 app.config['SECRET_KEY'] = os.urandom(24) # 随机产生24位的字符串作为SECRET_KEY

产生方法:引入OS模块中的产生一个24位的随机字符串的函数,这种方法有个缺点,就是服务器每次启动之后这个SECRET_KEY的值都会变。
3、操作session–如同操作字典一样
Flask中的session是通过from flask import session。然后添加值key和value进去即可。
(1)设置session

from flask import Flask,session
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)

# 设置session
@app.route('/')
def set():
    session['username'] = 'asd' # 设置“字典”键值对
    return 'success'

if __name__ == '__main__':
    app.run()

(2)读取session
因为session就像字典一样所以,操作它的时候有两种方法:

0x01  result = session[‘key’] :如果内容不存在,将会报异常
0x02  result = session.get(‘key’) :如果内容不存在,将返回None

所以,使用第二种方法获取session较好。

 # 读取session
@app.route('/get')
def get():
    # session['username'] = 'asd'
    # print(session.get('username'))
    # print(session['username'])
    return session.get('username')

(3)删除session

# 删除session
@app.route('/delete')
def delete():
    session['username'] = 'asd'
    print(session.get('username'))
    session.pop('username')
    print(session.get('username'))
    return 'success'

(4)清除session

# 清除session
@app.route('/clear')
def clear():
    session['username'] = 'asd'
    print(session.get('username'))
    session.clear
    print(session.get('username'))
    return 'success'

4、设置session的过期时间
如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束。
下面的方法可以用来配置session的过期时间
(1)如果设置了session的permanent属性为True,那么过期时间是31天。

session.permanent = True #一个月有效期

(2)一种更先进的配置有效期的方法:(比如配置7天有效)

  • 引入包:from datetime import timedelta;
  • 配置有效期限:app.config[‘PERMANENT_SESSION_LIFETIME’] = timedelta(days=7) # 配置7天有效
  • 设置:session.permanent = True;
from flask import Flask,session
from datetime import timedelta
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效

# 设置session
@app.route('/')
def set():
    session['username'] = 'asd'
    session.permanent = True
    return 'success'

本文标签: 操作Pythonflasksession