在登录时注销任何其他设计用户类型

时间:2014-04-07 14:44:27

标签: ruby-on-rails ruby-on-rails-3 authentication devise

我有三种Devise用户类型:管理员,用户和订阅者。我想确保如果用户登录(或注册),任何current_admin或current_subscriber都已注销,同样对于其他每个用户类型,所以基本上只能一次登录一个用户类型。 / p>

Devise似乎没有开箱即用。在子类会话控制器中处理这个似乎不是正确的方法,因为这在用户注册后登录的情况下不起作用。

看来Devise:DatabaseAuthenticatable::after_database_authentication might be appropriate。但这意味着暴露Devise ..._ signed_in?到每个用户类型模型。无论如何,这并不属于模型。

  # Post authentication hook
  def after_database_authentication
    sign_out current_user if user_signed_in?
    sign_out current_subscriber if subscriber_signed_in?
  end

然而,将逻辑放在Devise::SessionsController的子类中并不是很好,因为在注册期间/之后永远不会运行。

我该如何处理?

0 个答案:

没有答案
相关问题