设计回电

the*_*gah 23 ruby ruby-on-rails devise

当用户登录和退出时,设计是否有回叫?

这就是我想出的:

Warden::Manager.after_authentication do |user,auth,opts|
  user.update_attribute(:currently_signed_in, true)
end

Warden::Manager.before_logout do |user,auth,opts|
  user.update_attribute(:currently_signed_in, false)
end
Run Code Online (Sandbox Code Playgroud)

这就是我跟踪当前登录用户的方法.

srb*_*ert 16

我不是专家,但我相信回调(钩子)处于守望级别(Devise建立在Warden之上).

Warden中的after_set_user和before_logout应该可以帮到你,但Warden :: Hooks中还列出了其他选项

  • 钩子可以进入`config/initializers/devise.rb`以防万一有人像我一样在想. (16认同)

Mou*_*mir 5

您可以像这样覆盖应用程序控制器中的sign_in

 def sign_in(*args)
   super(*args)
    # do whatever you want here
    token = current_user.authentications.where(provider: "facebook").first.token
    facebook = Koala::Facebook::API.new(token)
    session[:facebook] = facebook
end
Run Code Online (Sandbox Code Playgroud)