web-dev-qa-db-ja.com

すべてのユーザーが再度ログインする必要があるように、すべてのデバイスセッションをリセットするにはどうすればよいですか?

このRailsアプリがherokuでホストされている謎のポイントXで、ログインしたユーザーが突然別のユーザーとしてログインすることになります。認証にはdevise gemを使用しています。

これは、私たちが知っている2人のユーザーに対して発生しています。現在、この問題の根本的な原因を突き止めています。

今私がしなければならないのは、ユーザーに再度ログインさせるために、すべてのデバイスセッションを無効にすることです。ユーザーがログインした後、問題は解消したようです。

Secret_tokenをリセットしてみましたが、再度ログインする必要はありませんでした。次に、私は自分のWebダイノを縮小してから、再び拡大しました。アプリも再起動しました。セッションをリセットするために、secret_tokenの変更を取得しようとするすべてのユーザー。

他のアイデアはありますか?

22
JB.

セッションをCookieに保存している場合(デフォルト)、session_tokenの変更は機能します。

しかし、active_recordに保存している場合は、次の方法ですべてのセッションを削除できます。

rake db:sessions:clear

次に:BAM!これ以上のセッションはありません。

16
Jesse Wolgamott

セッションCookie名を変更して、config/initializers/session_store.rbにあるすべてのセッションを無効にできるはずです。

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

セッションに他の重要な情報が保存されていない場合は、セッションをクリアできます。

rake db:sessions:clear
4
Matchu

受け入れられた回答を更新しました、今です

rake tmp:clear

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

4
lab419

Deviseには timeoutable と呼ばれるものがあります。これで作業できますか?

1
catsby

チェックアウト

  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

この投稿を参照 Deviseですべてのユーザーをログアウト

コンソールからこのようなことを行うには、この例を確認して必要に応じて調整する必要があります

Railsコンソール? からDeviseを使用してユーザーをサインインする方法==

1
Abram

Cookieストアを使用する場合、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-

0
Arjun

sign_out_all_scopes(lock = true)⇒オブジェクト

すべてのアクティブなユーザーまたはスコープをサインアウトします。このヘルパーは、ワンクリックですべてのロールをサインアウトするのに役立ちます。これは監視員のすべてのスコープをサインアウトします。少なくとも1つのログアウトがあった場合はtrueを返し、すべてのスコープにログインしているユーザーがいない場合はfalseを返します。

ソース: http://www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/SignInOut

0
plombix