Flask--session

3. flask中的session工作机制

  1. flask中的session机制是:把敏感数据经过加密后放入session中,然后再把session存放到cookie中,下次请求的时候,再从浏览器发送过来的cookie中读取session,然后再从session中读取敏感数据,并进行解密,获取最终的用户数据。
  2. flask的这种session机制,可以节省服务器的开销,因为把所有的信息都存储到了客户端(浏览器)。
  3. 安全是相对的,把session放到cookie中,经过加密,也是比较安全的,这点大家放心使用就可以了。

4. 操作session

  1. session的操作方式:
    • 使用session需要从flask中导入session,以后所有和sessoin相关的操作都是通过这个变量来的。
    • 使用session需要设置SECRET_KEY,用来作为加密用的。并且这个SECRET_KEY如果每次服务器启动后都变化的话,那么之前的session就不能再通过当前这个SECRET_KEY进行解密了。
    • 操作session的时候,跟操作字典是一样的。
    • 添加sessionsession['username']
    • 删除:session.pop('username')或者del session['username']
    • 清除所有sessionsession.clear()
    • 获取sessionsession.get('username')
  2. 设置session的过期时间:
    • 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
    • 如果设置了session的permanent属性为True,那么过期时间是31天。
    • 可以通过给app.config设置PERMANENT_SESSION_LIFETIME来更改过期时间,这个值的数据类型是datetime.timedelay类型。

5. Code

# session_demo.py
 
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'] = 'zhiliao'
    # 如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束
    # 如果设置了session的permanent属性为True,那么过期时间是31天。
    session.permanent = True
    return 'Hello World!'
 
@app.route('/get/')
def get():
    # sesssion['username']  # 若不存在是会报错,建议使用get()
    # session.get('username')
    print(session.get('username'))
    return 'sucess'
 
@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)
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值