如何重置所有设计会话,以便每个用户都必须重新登录?

JB.*_*JB. 22 ruby-on-rails heroku devise

在heroku上托管此rails应用程序的某个神秘点X,登录用户将突然以另一个用户身份登录.我正在使用devise gem进行身份验证.

这已经发生在我们所知道的2个用户身上.我目前正在追查这个问题的根本原因.

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

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

还有其他想法吗?

小智 24

您应该能够更改会话cookie名称以使所有会话无效,这些会话位于config/initializers/session_store.rb中

YourApp::Application.config.session_store :cookie_store, key: '_change_me_session'
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一有效的解决方案(使用Heroku + Rails + Postgres) (2认同)

Jes*_*ott 16

如果您将会话存储在cookie中,则更改session_token(默认).

但是,如果您存储在active_record中,则可以通过以下方式删除所有会话:

rake db:sessions:clear
Run Code Online (Sandbox Code Playgroud)

然后:BAM!没有更多的会议.

  • 无论我如何尝试,我都会得到一个"不知道如何建立自己"的任何建议? (6认同)
  • 它应该是`rake tmp:clear`或`tmp:sessions:clear,tmp:cache:clear` (3认同)

lab*_*419 5

更新已接受的答案,现在是

rake tmp:clear

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