如何添加自定义Devise / Warden身份验证策略以与ActiveAdmin一起使用?

时间:2015-03-18 16:17:17

标签: devise activeadmin warden ruby-on-rails-4.2

我正在尝试构建一个SSO系统,其中不同子域下的一堆Rails 4应用程序共享一个共同的cookie。我有4个应用程序通过巫术宝石进行身份验证,2个应用程序使用ActiveAdmin和Devise。

使用Sorcery的4个应用程序按预期工作,我可以成功登录用户使用相同的会话cookie访问所有4个不同的应用程序。

我遇到了2个Devise / ActiveAdmin应用程序的问题。我添加了自定义Warden身份验证策略并配置了Devise来使用它。但我不认为该策略正在被使用,因为我继续获得401未经授权的错误和任何put语句/登录验证!以下方法从未见过。有过这方面经验的人吗?或者可能有一些帮助跟踪身份验证步骤发生的位置,以便我可以尝试添加一些日志记录?

Warden::Strategies.add(:gc_auth) do
  def valid?
    true
  end

  def authenticate!
    user = AdminUser.find_by_uuid(session[:user_uuid])
    user ? success!(user) : fail!("Not signed in") 
  end
end



config.warden do |manager|
  manager.default_strategies.unshift :gc_auth
end

1 个答案:

答案 0 :(得分:1)

能够通过检查这个宝石的结构来实现这个目标:

https://github.com/AMekss/devise_custom_authenticatable