ruby-on-rails - session 之间的差异 [:food] and cookies. 永久 [:food]

标签 ruby-on-rails session cookies

session[:food]="pizza"之间的区别和 cookies.permanent[:food]=pizza ?
我试图阅读 rails 文档,它说:

Rails 2 introduced a new default session storage, CookieStore. CookieStore saves the session hash directly in a cookie on the client-side.



然后我不明白,如果 session[:food] 保存在 cookie 中,那么 cookies.permanent[:food] 这样做,有什么区别?

最佳答案

如果你做 session[:food] 你使用的是传统的 Rails session :这个 session 对象通过将它存储在 中使你的值“pizza”在页面之间可用 cookies 过期 浏览器关闭时 (这意味着如果您关闭浏览器,您的 session[:food] 将被销毁)

当我们谈论永久时,我们谈论的是持久性 session ,那么是什么意思呢?

持久 session 是一个永久 cookie,即使您关闭浏览器,它仍然存在(“永远”),并且只有在您明确将其过期或将其删除时才会过期。

但是如何制作一个“永远”仍然存在的cookie?

如果我说“永远”,那是因为这是一个棘手的问题,而这样做的方法是将 cookie 设置为从现在起 20 年或 60 年后过期很长时间......就像这样:

cookies[:remember token] = { value: "pizza", expires: 20.years.from now.utc }

这种设置 future 20 年过期 cookie 的模式变得如此
常见的是 Rails 添加了一个特殊的永久方法来实现它,这样我们就可以
简单地写:
cookies.permanent[:food] = "pizza"

回答你的问题,结构上没有区别,每个都是cookie,区别只是在每个人的生命周期

希望这对你有帮助

关于ruby-on-rails - session 之间的差异 [:food] and cookies. 永久 [:food],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877820/

相关文章:

php - 在 ruby​​ 中使用 Blowfish 加密字符串返回的字符串比 php 中的相同进程更短

node.js - 跟踪两个不同服务器之间的用户

java - 在 session 中存储数据,如何以及何时检测数据是否过时

ruby-on-rails - ruby 子类过滤器

mysql - 编写迁移以更改特定列中的特定功能

javascript - 使用 JS 调用编辑 $_SESSION

java - 在应用程序中维护两个不同 http 请求的 session 状态

php - 我应该如何将用户的 LDAP 密码存储在 cookie 中?

javascript - 无法将我的计时器值存储在 cookie 中

ruby-on-rails - 未定义方法 `+' 为 nil :NilClass - Ruby