Flask session

session会话,是指将用户的信息存在服务器端.不同的框架有不同的实现方式.
在flask中,形式上是操作session对象,本质上还是将数据存在了cookie中
flask-session可以设置信息存在服务器的redis,或mysql,以及文件中.而在cookie中存一个key,用来查询

原理:

  • 请求刚到来:获取通过cookie随机字符串,存在则去“数据库”中获取原来的个人数据,否则创建一个空容器(flask中的session对象)。
  • 视图:操作内存中对象(随机字符串,{放置数据的容器})
  • 响应:内存对象(随机字符串,{放置数据的容器})
    - 将数据保存到“数据库”(这个数据库可以是客户端的cookie或者服务端的redis,mysql,mongo,file)
    - 把随机字符串写在用户cookie中

1.flask原始session

在实际应用中,我们只要在session中存储user_id,通过判断session中有没有user_id就可以判断用户是否登录

from flask import Flask, session

app = Flask(__name__)
app.config['SECRET_KEY'] = "123"  # 保存在客户端的cookie中,所以要求强制加密

@app.route('/get')
def index():
    name = session.get('name')
    pwd = session.get('pwd')
    print(pwd)
    return name or '没有session'

@app.route('/set')
def get_session():
    session['name'] = 'wang'
    session['pwd'] = '123'
    return '设置session!'

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


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.自定义session行为模式

重写app.session_interface即可,flask-session既是这样实现的

from flask import Flask,session
app = Flask(__name__)
app.secret_key = '123'

import json
class MySessionInterFace(object):
    def open_session(self,app,request):
        return {}
    def save_session(self, app, session, response):
        response.set_cookie('123',json.dumps(session))
    def is_null_session(self, obj):
        """Checks if a given object is a null session.  Null sessions are
        not asked to be saved.

        This checks if the object is an instance of :attr:`null_session_class`
        by default.
        """
        return False
app.session_interface = MySessionInterFace()

@app.route('/')
def index():
    session['xxx'] = 123
    return 'Index'
    
if __name__ == '__main__':
    app.run()

参考:
https://blog.csdn.net/feit2417/article/details/80735527

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值