我有三种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
的子类中并不是很好,因为在注册期间/之后永远不会运行。
我该如何处理?