如何在Rails中获取cookie过期时间?

时间:2012-07-23 09:07:36

标签: ruby-on-rails cookies set

我在这里读到: Get cookie expiration

只有名称和值被发送到服务器,因此没有其他cookie数据可用。

这意味着无法获取Cookie的到期日期? 所以我必须在我的数据库中保存该日期,如果我以后需要它?

2 个答案:

答案 0 :(得分:6)

没错,只返回 cookie-name cookie-value

这不是Rails或PHP的缺点,它在RFC 6265中以这种方式定义:

  

请注意,不会返回cookie属性。特别是,     一个服务器无法单独从Cookie标头确定     cookie将过期,cookie的有效主机为哪个     cookie的路径有效,或者cookie是否设置为     安全或HttpOnly属性。

答案 1 :(得分:0)

虽然接受的答案是正确的,但我来到这里是因为我想确保我的应用程序设置永久 cookie(在远期将来有一个到期日期),而不是正常的。< / p>

如果您想验证是否是这种情况(并且您不关心确切的到期日期),您可以设置这样的期望(该示例使用Mocha gem):

ActionDispatch::Cookies::PermanentCookieJar.any_instance.expects(:[]=).with(:key, "value").once

此预期只会通过cookies.permanent[:key] = "value"的一次调用而传递,但cookies[:key] = "value"会失败。

它也适用于签名的cookie(cookies.permanent.signed[:key] = "value")。但请注意,已签名的Cookie会根据您应用的secret_key_base加密其值,因此您必须将期望值调整为

ActionDispatch::Cookies::PermanentCookieJar.any_instance.expects(:[]=).with(:key, anything).once

代替。