所以我以不同的方式here提出了这个问题并没有得到答案,所以我试着改写它,因为这似乎是一个非常简单的问题。
我有一个基于cookie会话的Rails应用程序。默认情况下,他们没有任何expires_at时间戳,因此会话cookie的范围是' session'。这是你的香草Rails会话。
现在我想创建一个演示用户'我在15分钟后踢出用户的功能。为此,我想在Time.now + 15.minutes的会话cookie上设置expires_at
session[:expires_at] = Time.now + 15.minutes
现在上面这段代码确实执行了,但它对cookie的范围没有影响。范围仍然是' session'。如何更改“#session”会议的范围?成为约会时间?
如果我将生产.rb中的整个应用程序的会话配置为
:expire_after => 24.hours
然后它会起作用......但问题是我想有选择地控制会话cookie上的截止日期。
编辑:当我设置会话[:expires_at]时,原因是因为后续请求破坏了会话cookie并重置了它回到会议。仍然不知道该怎么做。
答案 0 :(得分:2)
也许不是依赖于cookie过期(参见"Ruby On Rails Security Guide"中关于它为什么不好的第2.9节),类似于this answer,在会话本身创建会话时存储时间戳(比如{{1然后检查每个请求是否需要为这些“演示用户”过期:
session[:created_at]
答案 1 :(得分:0)
虽然不是非常优雅的方式,但这适用于单个会话:
...
request.env['rack.session.options'] = {expire_after: 15.minutes}
session[:user_id] = 1
...