我使用SQLAlchemy在Flask中实现了服务器端Session,基于此snippit:
class SqlAlchemySession(CallbackDict, SessionMixing):
...
class SqlAlchemySessionInterface(SessionInterface):
def __init__(self, db):
self.db = db
def open_session(self, app, request):
...
def save_session(self, app, session, response):
...
一切都按预期工作。当用户登录时,会话存储在数据库中,会话ID放在cookie中并返回给用户。当用户注销时,将调用session.clear()
,并从用户中删除cookie。
但是,会话不会从数据库中删除。我希望我可以在我的SqlAlchemySessionInterface
类中实现这个逻辑,而不是定义一个函数并调用它来代替session.clear()
。
同样,在sessions.py代码中,没有对clear
的任何引用,并且唯一一次删除Cookie是if the session was modified。
API documentation for sessions也没有说明clear
方法的工作原理。
除了将我对session.clear()
的所有来电替换为:{/ p>之外,是否有人知道实现这一目标的方法
def clear_session():
sid = session.get('sid')
if sid:
db.session.query(DBSession).filter_by(sid=sid).delete()
db.session.commit()
session.clear()
答案 0 :(得分:0)
如果要删除重复,可以定义名为logout_user
在该功能中,您可以从数据库中删除会话记录以及session.clear()
。
在\logout
或适当的地方调用此函数。