【问题标题】:Session exists even after destroying会话即使在销毁后仍然存在
【发布时间】:2015-04-14 14:28:52
【问题描述】:

我有一个名为 session[:computerid] 的会话变量,登录时它设置为“comp--001”。注销时,我正在删除会话,如下所示

 session.delete(:computerid)

但是在这样做之后,如果我调试 session[:computerid],它会显示值“comp--001”。

我的 session_store.rb 文件有以下代码:

 Rails.application.config.session_store :cookie_store, key: '_sample_app_session', :domain=>:all

你能建议我解决这个问题吗?

【问题讨论】:

  • 试试session[:computerid]=nil 或者如果你想重置整个会话然后在destroy方法reset_session调用这个,你的整个会话将得到deleted
  • 它不工作桑提亚

标签: ruby-on-rails ruby session ruby-on-rails-4


【解决方案1】:

您可以尝试将其设置为nil 吗?喜欢:

session[:computerid] = nil

这是 Rails 中最常见的模式。

希望对你有帮助!

祝你好运!

【讨论】:

  • 我得到未定义的方法“删除!”对于#<:request::session:0xb4589d0>
  • 这很奇怪,因为在这种情况下,nil 值应该存储在:computerid 键下。请查看documentation 中的示例,其中:current_user_id 通过分配nil 被删除。
【解决方案2】:

当用户退出时,Ruby on Rails 不知道您想保留什么。

例如,假设您有一个会话[:language] 对每个用户都有用,即使是匿名用户。在用户经历了特别选择一种语言的麻烦之后,您不希望将其删除以显示默认语言。

因此,删除您需要的会话对象,例如 session[:user]=nil 并保留其余部分。如果您有很多要删除的内容,请让自己成为注销助手。

如果您知道可以滑动整个会话,请使用 reset_session

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2015-04-02
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    相关资源
    最近更新 更多