【问题标题】:Rails 5 session.delete, not deleting cookies in my browserRails 5 session.delete,不删除浏览器中的cookie
【发布时间】:2017-02-18 16:17:42
【问题描述】:

我一直在做这个练习

https://www.railstutorial.org/book/basic_login#sec-exercises_logging_out

据说注销后我应该确认会话被删除, 是否使用删除会话

session.delete(:user_id)

会使我的浏览器 (Firefox) 中的 cookie 消失吗?

另外,我注意到当我访问我网站中的不同页面时,cookie 的内容会发生变化,这是一种预期的行为吗?我第一次访问我的网站时也会收到 cookie,即使没有登录

【问题讨论】:

    标签: ruby-on-rails session cookies


    【解决方案1】:

    不,它只会从 cookie 中删除密钥,正如我们在源代码 https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/request/session.rb#L146 中看到的那样。 它实际上会杀死经过身份验证的人,但 cookie 仍然存在(只是不会说用户已通过身份验证)。

    另外,我注意到当我访问我网站的不同页面时,cookie 的内容会发生变化,这是一种预期的行为吗?

    是的,如果您使用 CookieStore(这是 Rails 中的默认方式),所有数据都存储在 cookie 中。因此,如果您添加或更改字段,cookie 会更改。 (您会注意到数据已加密,因此很安全)。 http://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html

    我第一次访问我的网站时也会收到 cookie,甚至 不登录时

    Rails 甚至在任何身份验证发生之前就开始会话是有道理的——它基本上只是一个没有任何数据的标识符。 “会话”不一定意味着经过身份验证的用户,您可能希望保存用户的首选语言或他在经过身份验证之前打开网站的时间。

    【讨论】:

    • 谢谢,我的印象是它应该完全删除cookie。虽然现在很清楚,但我应该如何确认会话已通过浏览器 cookie 删除。
    猜你喜欢
    • 2010-11-19
    • 2011-02-18
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-02
    • 2017-05-08
    • 1970-01-01
    • 2014-02-21
    相关资源
    最近更新 更多