为什么合法用户会自愿退出?

时间:2018-10-26 11:26:35

标签: session session-cookies csrf ruby-on-rails-2 ruby-1.8.7

我有一个基于Rails 2构建的应用程序。如果用户打开同一个应用程序的两个实例(dev,uat或任意两个),则该用户活动时将注销。同样,此行为也不一致。有时会在登录后2分钟内发生,有时会在半小时内发生一次。

还要注意的一件非常有趣的事情是:如果我禁用CSRF令牌验证,则除非会话超时或用户自愿注销,否则用户永远不会注销。

-更新- 在深入研究该问题之后,我发现CSRF并非导致此问题的原因。会话ID正在从Cookie中删除。可能是造成此问题的原因

1 个答案:

答案 0 :(得分:0)

因此,正如我在问题中已经说过的那样,CSRF验证不是注销问题的原因。因此,我进行了更深入的研究,发现session_id cookie被随机删除了,也就是说,当我尝试进一步使用该应用程序时,它显然已注销。

因此,解决此问题的方法是确保不允许删除session_id cookie。为此,我将Cookie标记为安全。尽管我仍然无法找出删除Cookie的根本原因。

我正在使用SqlSessionStore存储会话信息。以下是我提出的解决方案:

ActionController::Dispatcher.middleware.swap(:"ActiveRecord::SessionStore",
                                             SqlSessionStore, {:secure => true})