2

ユーザーのセッションがDeviseでタイムアウトしたときに、コールバックを取得/処理する方法はありますか?

DeviseSessionsController をオーバーライドするプレーンな古い方法は機能しません:

class SessionsController < Devise::SessionsController

  def destroy
    #do something
    super
  end

end

これは、ユーザーがログアウトしたときにのみ機能します。これは、セッション タイムアウト時にコントローラーが呼び出されないように見えるため、理にかなっています。誰かが私を助けることができますか?

4

2 に答える 2

6

Warden.before_logoutを実行することが最善の解決策であることがわかりました。

# app/models/user.rb

Warden::Manager.before_logout do |user, auth, opts|
  #fdsafdsafdsa
end

残念ながら、純粋なDeviseでこれを行う方法はないようです。

于 2012-06-01T05:04:39.107 に答える
0
before_filter :destroy_custom, :only => [ :destroy ]


def destroy_custom 
    # Do your thang
end

新しい方法でこれを行うことができました。destroy でも同じことができると思います。コールバックは devise_custom 内で呼び出すことも、devise_custom 自体を破棄する前に何かを実行するメソッドにすることもできます。

于 2012-06-01T01:29:24.690 に答える