我如何可以将所有设计会话所以每个用户必须重新登录?(How can I reset all devi

2019-09-02 02:11发布

在有些神秘X点与托管在Heroku上,这个Rails应用一个登录的用户会突然被登录为其他用户。 我使用的用于身份验证的色器件宝石。

这已经发生了,我们知道的用户。 我目前正在追查这个问题的根本原因可能是什么。

我现在需要做的是所有无效为了迫使用户重新登录设计会议。 当用户登录时,这个问题似乎消失。

我试着正在重置我secret_token,但我不是被迫重新登录。 然后我缩放我的网站DYNOS下来,然后备份。 我也重新启动应用程序。 所有试图让secret_token变化复位会话。

任何其他的想法?

Answer 1:

更改,如果你存储的cookie(默认)你的会话你session_token会工作。

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

rake db:sessions:clear

然后:BAM! 没有更多的会话。



Answer 2:

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

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


Answer 3:

如果您的会话不存储任何其他重要信息,你可以清除会话:

rake db:sessions:clear


Answer 4:

更新接受的答案,现在是

rake tmp:clear

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



Answer 5:

设计有一个东西叫timeoutable您可以用工作吗?



Answer 6:

查看

  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控制台的用户登录?



Answer 7:

sign_out_all_scopes(锁=真)⇒对象

登出所有活跃用户或范围。 这个辅助是在点击注销所有角色有用。 这标志了所有范围的监狱长。 返回true,如果有至少一个注销,假如果没有用户登录的所有范围。

来源: http://www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/SignInOut



Answer 8:

当使用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



文章来源: How can I reset all devise sessions so every user has to login again?