问题标签 [flask-kvsession]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flask - 为什么 Flask-Security 会为每个请求导致一个新的 KVSession 记录?
我正在尝试使用Flask-KVSession作为 Flask 网站的替代会话实现。我创建了一个测试网站(参见下面的代码 1)。当我运行它时,我可以使用浏览器通过在我的网络浏览器中的各种资源之间导航来将值存储到会话中。这可以正常工作。此外,当我查看sessions
生成的 SQLite 数据库中的表时,我看到一条记录一直用于存储该会话。
然后我尝试将Flask-Security添加到此(参见下面的代码 2)。运行此站点后(确保首先删除现有的 test.db sqlite 文件),我被带到登录提示并登录。然后我继续做同样的事情,在资源之间来回跳转。我得到相同的结果。
问题是当我查看 sqlitebrowsersessions
表时,有 8 条记录。事实证明,为每个发出的请求创建了一个新的会话记录。
为什么在使用 Flask-Security 时会为每个请求创建一个新的会话记录?为什么现有会话没有像以前那样更新?
代码 1(没有 Flask-Security 的 KVSession)
代码 2(带有 Flask-Security 的 KVSession)
版本信息
flask - 覆盖 Flask 扩展类
在您的应用程序中覆盖 Flask 扩展类的首选方法是什么。
例如
使用 FlaskKvSession:https ://github.com/mbr/flask-kvsession/blob/master/flaskext/kvsession.py
您将如何覆盖 SessionID(object): init (self, id, created=None): 在您的应用程序中,无需猴子修补核心扩展。
python - 如何从 Flask-KVSession 中删除特定密钥(用于当前会话)?
我正在使用 Flask kvsession 来避免重放攻击,因为 Flask-login 使用的基于 cookie 的客户端会话很容易出现这种情况。例如:如果在 /index 页面上,您的标头中的 cookie 设置为您的应用标头,例如 myapp_session : 'value1' 并且如果您导航到 /important 页面,您将获得一个新标头,例如 myapp_session : 'value2' 所以如果黑客得到 ' value1' 他可以执行重放攻击并滥用它,因为它永远不会失效。
为了解决这个问题,我使用了flask-kvsession,它将会话cookie标头值存储在缓存或某个后端中。所以基本上只有一个 myapp_session 在您注销时生成并失效。但问题是:-
如果您查看 kv-session http://pythonhosted.org/Flask-KVSession/#flask_kvsession.KVSessionExtension.cleanup_sessions代码的 cleanup_session 部分
它只删除过期的会话。但是,如果我想在注销时为特定用户显式删除当前 myapp_session 的值,我该怎么做?
但这会删除所有键,因为我不知道当前会话的唯一键是什么。
Q2。另外,如何使用 memcache 而不是 redis,因为它没有 app.kvsession_store.keys() 函数并给出 i/o 错误。
python - Flask-KVSession 0.6.2 中的 EOFError
我正在使用Flask-KVSession(版本 0.6.2)。它做它必须做的事情。但是当对 webserver 有连续的请求时,会像洪水一样重复以下异常。
EOFError的原因可能是什么?我尝试查看flask_kvsession的源代码,无法找出确切的问题。如何减轻 EOFError 的影响?请帮帮我。
python - 捕捉 Flask-KVSession 超时
当 Flask-KVSession 会话超时时,我需要能够记录。有没有一种简单的方法来捕获会话超时并在它们发生时记录?
flask - set time to live for each session separately KVsession flask
KBsession stores the session TTL based on PERMANENT_SESSION_LIFETIME is there a way to override this for specific sessions
EDIT: so I have two different API for login I need to give any user login from one of them an infinite session TTL, the other one will take PERMANENT_SESSION_LIFETIME value note: KBsession back-end is redis