2013-05-06 25 views
20

在heroku上托管此应用程序的某些神秘点X上,登录用户会突然以另一个用户身份登录。我正在使用devise gem进行身份验证。如何重置所有设计会话,以便每个用户都必须重新登录?

这已发生2我们知道的用户。我目前正在追查这个问题的根源可能是什么。

我现在需要做的是使所有设计会话无效,以强制用户再次登录。用户登录后,问题似乎消失。

我尝试重置我的secret_token,但我没有被迫再次登录。然后,我缩放了我的网页动物,然后备份。我也重新启动了应用程序。所有尝试获取secret_token更改以重置会话。

还有其他想法吗?

+0

你试过会话超时?它的设计模块 – kasperite 2013-05-06 20:02:30

回答

14

如果你改变你的session_token将工作将会话存储在Cookie中(默认)。

但是,如果你在active_record存储,那么你可以通过删除所有会话:

rake db:sessions:clear 

则:BAM!没有更多的会议。

+0

会话存储切换到活动记录之一。所以rake:db:sessions:清除了问题。 – 2013-05-06 20:56:00

+6

无论我如何尝试,我都会得到“不知道如何建立德克斯”..有什么建议吗? – 2014-05-05 10:41:46

+1

@TheMiniJohn字面上“taks”? – 2014-05-05 14:13:45

1

退房

module ClassMethods 
    Devise::Models.config(self, :timeout_in) 
    end 

我只是猜测,你可以这样做:

User.all.each do |user| 
    user.timeout_in 1.second 
end 

但我不知道这是否仅管理新会话..而不是现有的?

其实这是过于复杂..只是尝试:

User.all.each do |user| 
    sign_out user 
end 

看到这个职位Log out all user with Devise

做这样的事情从控制台,你需要看看这个例子,并调整它为您需要

How to sign in a user using Devise from a Rails console?

4

如果您的会话不存储任何其他重要信息,你可以清楚的S宽恕请求:

rake db:sessions:clear 
19

你应该能够改变你的会话cookie的名字无效所有会话,它生活在配置/初始化/ session_store.rb

YourApp::Application.config.session_store :cookie_store, key: '_change_me_session' 
+2

这仅仅是工作的解决方案(使用Heroku上的Rails + +的Postgres) – Onichan 2016-05-29 22:13:42

1

更新上公认的答案,现在是

rake tmp:clear

rake -T ... rake tmp:create # Creates tmp directories for sessions, cache, sockets, and pids

相关问题