Flask – 将会话数据保存在数据库中,就像使用cookie一样
发布时间:2020-12-20 11:28:22 所属栏目:Python 来源:网络整理
导读:我正在使用Flask创建一个Web应用程序. 我想知道是否可以保存用户会话数据 session['ishappy'] = true 在数据库中,就像在Django中使用SessionMiddleware一样,您可以选择在cookie和数据库之间进行选择. 如果它是我应该导入我的Flask应用程序. 解决方法 我建议
我正在使用Flask创建一个Web应用程序.
我想知道是否可以保存用户会话数据 session['ishappy'] = true 在数据库中,就像在Django中使用SessionMiddleware一样,您可以选择在cookie和数据库之间进行选择. 如果它是我应该导入我的Flask应用程序. 解决方法
我建议您通过继承flask默认值来实现自己的Session和SessionInterface.基本上,您需要定义自己的会话类和会话接口类.
class MyDatabaseSession(CallbackDict,SessionMixin): def __init__(self,initial=None,sid=None): CallbackDict.__init__(self,initial) self.sid = sid self.modified = False 上面的类现在将具有将存储在cookie中的会话ID(sid).与此会话ID相关的所有数据都将存储在您的mysql数据库中.为此,您需要实现以下类和方法: class MyDatabaseSessionInterface(SessionInterface): def __init__(self,db): # this could be your mysql database or sqlalchemy db object self.db = db def open_session(self,app,request): # query your cookie for the session id sid = request.cookies.get(app.session_cookie_name) if sid: # Now you query the session data in your database # finally you will return a MyDatabaseSession object def save_session(self,session,response): # save the sesion data if exists in db # return a response cookie with details response.set_cookie(....) 此外,您还可以定义用于存储会话数据的模型: class SessionData(db.Model): def __init__(self,sid,data): self.sid = sid self.data = data # and so on... 以下片段应该给你一个想法: http://flask.pocoo.org/snippets/75/ http://flask.pocoo.org/snippets/86/ http://flask.pocoo.org/snippets/110/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |