gpt4 book ai didi

ruby - 如何访问当前的 Rack::Session 实现

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:31 25 4
gpt4 key购买 nike

我正在开发一个 gem,它不仅需要读取和写入当前 session ,还需要读取和写入其他“链接” session 。现在,只要我需要更新当前 session 以外的 session ,我就会对我们在 rails 和 rack 应用程序中使用的底层 session 存储进行硬编码读写。但是,需要一种更通用的方法来使解决方案可移植到其他 session 实现。

在 Rails 应用程序中,我可以查看 Rails.application.config.session_store 以确定 session 存储实现,并实例化一个新实例以读取和写入当前 session 以外的 session 。生成 session 存储的另一个实例似乎效率有点低,但它似乎确实有效。

但是,我想不出任何方法来通过 Rack 应用程序查询当前 session 存储。 env['rack.session']env['rack.session.options'] 不提供任何见解。

最好的解决方案是访问中间件堆栈中已经实例化的 Rack::Session Rack 应用程序。我不确定如何查询正在运行的中间件以及哪个是当前的 Rack::Session 实现(只需检查哪个是 Rack::Session::Abstract::ID 的后代? ).

任何查询中间件的提示或替代建议将不胜感激。

最佳答案

您可以使用 request.cookies["rack.session"] 访问 Rack 中的 session 。 Rack < 1.0 用于允许您通过请求实际传递 session 变量,but it has been disabled in newer versions of rack for security purposes .我知道有点晚了,但希望这对您有所帮助。

关于ruby - 如何访问当前的 Rack::Session 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com