gpt4 book ai didi

ruby - Sinatra 中的 session 问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:40 25 4
gpt4 key购买 nike

我的 sinatra 应用程序使用 Rack::Session::Pool 并且运行良好。

我使用 session.clear 创建了一个注销路由,它也能正常工作。

但是(总有一个)如果用户没有点击注销按钮就关闭了浏览器,那么当他重新打开浏览器时用户会保持登录状态。

我检查了 firefox 中的 cookie, session cookie (rack.session) 仍然存在!我去了我的网站,去了另一个网站,验证了 cookie,它就在那里,关闭浏览器并再次打开它,rack.session 仍然在那里 :( 我的客户甚至重新启动了他的机器,他仍然登录了该网站。

如果我在 Rack::Session::Pool 中设置了 expire_date,它会起作用,但 cookie 会变得持久。我希望用户的 session 在他关闭浏览器时过期,而不管到期日期如何(最糟糕的情况是用户在公共(public)计算机或局域网中)。

我已经为此工作了 2 天,我查看了机架源代码并尝试在 Rack::Session::Abstract 中设置其他变量,但直到现在都没有成功。

现在我将 session 设置为在 5 分钟后过期以尽量减少问题,但这不是一个好的解决方案,因为用户在他上次请求后仍然暴露了 5 分钟(如果用户没有点击注销按钮)。

这是我的 cookie 配置:

app = MyApp.new
sessioned = Rack::Session::Pool.new(app,
:domain => DOMAIN,
:expire_after => 5 * 60)
run sessioned

也许我在这里遗漏了什么。有谁知道可能是什么问题?或者有同样的问题?或者任何链接?

干杯,

乔纳斯

最佳答案

删除 :expire_after 并在浏览器关闭时停止 session 持续存在。

关于ruby - Sinatra 中的 session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4565446/

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