在有些神秘X点与托管在Heroku上,这个Rails应用一个登录的用户会突然被登录为其他用户。 我使用的用于身份验证的色器件宝石。
这已经发生了,我们知道的用户。 我目前正在追查这个问题的根本原因可能是什么。
我现在需要做的是所有无效为了迫使用户重新登录设计会议。 当用户登录时,这个问题似乎消失。
我试着正在重置我secret_token,但我不是被迫重新登录。 然后我缩放我的网站DYNOS下来,然后备份。 我也重新启动应用程序。 所有试图让secret_token变化复位会话。
任何其他的想法?
更改,如果你存储的cookie(默认)你的会话你session_token会工作。
但是,如果你在active_record存储,那么你可以通过删除所有会话:
rake db:sessions:clear
然后:BAM! 没有更多的会话。
你应该能够改变你的会话cookie的名字无效所有会话,它生活在配置/初始化/ session_store.rb
YourApp::Application.config.session_store :cookie_store, key: '_change_me_session'
如果您的会话不存储任何其他重要信息,你可以清除会话:
rake db:sessions:clear
更新接受的答案,现在是
rake tmp:clear
rake -T ... rake tmp:create # Creates tmp directories for sessions, cache, sockets, and pids
设计有一个东西叫timeoutable您可以用工作吗?
查看
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
看到这个帖子登出所有用户与设计
从控制台做这样的事情,你需要看看这个例子,并调整它为您的需求
如何使用设计从一个Rails控制台的用户登录?
sign_out_all_scopes(锁=真)⇒对象
登出所有活跃用户或范围。 这个辅助是在点击注销所有角色有用。 这标志了所有范围的监狱长。 返回true,如果有至少一个注销,假如果没有用户登录的所有范围。
来源: http://www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/SignInOut
当使用cookie存储,我们必须重新生成它用于饼干加密应用secret_token。
文件来配置secret_token: config/initializers/secret_token.rb
bundle exec rake secret
可以用来产生一个新的秘密令牌。
https://www.tigraine.at/2012/08/03/how-to-expire-all-active-sessions-in-rails-3