Flask中的session和cookie

会话控制

  • 说明:

    因为HTTP协议无状态无连接的特点,导致一个用户在同一网站做连续操作,需要不断的提供身份信息;为了解决这个问题,我们可以通过cookie携带特定的信息加以解决。当首次访问网站时设置cookie信息,以后每次再访问该网站时,浏览器会自动携带cookie信息。

  • 使用:

    from flask import Blueprint, request, make_response
    
    cookie = Blueprint('cookie', __name__, url_prefix='/cookie')
    
    
    # 获取
    
    @cookie.route('/get/')
    def get_cookie():
    return request.cookies.get('name', '你是哪个二哥?')
    
    
    # 设置
    
    @cookie.route('/set/')
    def set_cookie():
      resp = make_response('cookie已设置')
      # 设置cookie,默认有效期为浏览器关闭
      # expires:有效期,是一个datetime类型的参数
      # max_age:有效期,是一个int类型的参数,推荐使用
      resp.set_cookie('name', '二狗', max_age=10)
      return resp
    
    
    # 删除
    
    @cookie.route('/del/')
    def del_cookie():
      resp = make_response('cookie已删除')
      # 删除cookie,其实是设置cookie立即失效
      resp.delete_cookie('name')
      return resp

session

  • 说明:

    session是一种比cookie更加安全的携带信息的方案,功能与cookie相同。

  • 分类:

    • server side session:数据存放在服务器上,客户端保存的是seesion_id(通过cookie传输)
    • client side session:将session数据加密编码,然后保存到客户端,flask默认采用的就是这种方案
  • 使用:

    from flask import Blueprint, session
    
    sess = Blueprint('sess', __name__, url_prefix='/session')
    
    
    # 获取
    
    @sess.route('/get/')
    def get_session():
      return session.get('name', 'who are you?')
    
    
    # 设置
    
    @sess.route('/set/')
    def set_session():
      # 设置有效期,默认浏览器关闭即失效
      # 设置为True,session有效期为永久
      # 永久的时间由PERMANENT_SESSION_LIFETIME配置选项决定,默认31天
      session.permanent = True
      session['name'] = 'cuihua'
      return 'session已设置'
    
    
    # 删除
    
    @sess.route('/del/')
    def del_session():
      # 删除指定的session,第二个参数设置为None,session不存在也不报错
      # session.pop('name', None)
      # 清空session
      session.clear()
      return 'session已删除'

flask-session

  • 说明:将session数据保存到服务器的解决方案。

  • 安装:pip install flask-session

  • 使用:

    from flask import Flask, session
    from flask_script import Manager
    from redis import Redis
    from flask_session import Session
    
    app = Flask(name)
    app.config['SECRET_KEY'] = '123456'
    app.config['SESSION_TYPE'] = 'redis'
    app.config['SESSION_REDIS'] = Redis()
    manager = Manager(app)
    sess = Session(app)
    
    # 可以通过两步进行初始化
    
    
    # sess.init_app(app)
    
    
    @app.route('/')
    def index():
    return 'flask-session'
    
    @app.route('/get/')
    def get_session():
    return session.get('name', '你是谁?')
    
    @app.route('/set/')
    def set_session():
    session['name'] = 'dahua'
        return 'session已设置'
    
    if __name__ == '__main__':
    manager.run()   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值