我的sinatra应用程序使用Rack :: Session :: Pool,它工作正常。
我使用session.clear
创建了一个退出路线,它也可以正常工作。
但是(总有一个)如果用户在没有点击退出按钮的情况下关闭浏览器,则用户在重新打开浏览器时会保持记录。
我检查了firefox中的cookie,还有会话cookie(rack.session)!我去了我的网站,去了另一个网站,验证了饼干,它就在那里,关闭浏览器并再次打开它和rack.session仍在那里:(我的客户甚至重新启动了他的机器,他仍然登录了网站。< / p>
如果我在Rack :: Session :: Pool中设置了expire_date,那么它可以运行,但cookie会变得持久。我希望用户的会话在关闭浏览器时过期,无论过期日期如何(更糟糕的情况是公共计算机或局域网中的用户)。
我已经在这方面工作了2天,我查看了机架源代码,我尝试在Rack :: Session :: Abstract中设置其他变量但直到现在都没有成功。
现在我将会话设置为在5分钟内过期以最小化问题,但这不是一个好的解决方案,因为用户自上次请求后仍然暴露了5分钟(如果用户没有点击退出按钮)。
这是我的cookie配置:
app = MyApp.new
sessioned = Rack::Session::Pool.new(app,
:domain => DOMAIN,
:expire_after => 5 * 60)
run sessioned
也许我在这里遗漏了一些东西。有谁知道可能是什么问题?还是有同样的问题?或者任何链接?
干杯,
纳斯
答案 0 :(得分:2)
删除:expire_after,它会在浏览器关闭时停止会话持续存在。