你能用Devise和Active Admin禁用Pundit吗?

时间:2016-01-07 07:24:25

标签: ruby-on-rails devise activeadmin pundit

我有一个现有的Rails应用程序,它在用户模型上运行了Devise / Pundit。

我跟着:

How to get Active Admin to work with Pundit after login

https://gist.github.com/tomchentw/8579571

我现在不需要授权 - 设计身份验证就可以了。我可以"turn off" Pundit for Active Admin吗?

更新

这是超级猴子补丁:

after_action :verify_policy_scoped, only: [:index] if controller_path.split('/').first == "admin"

它有效,但我认为它不是理想的。

2 个答案:

答案 0 :(得分:0)

config.authentication_method = false  
config.current_user_method   = false

在config / initializers / active_admin.rb

答案 1 :(得分:0)

您可以尝试设置授权适配器

设置自己的AuthorizationAdapter很简单!以下示例显示如何设置授权适配器类并将其绑定到Active Admin:

# app/models/only_authors_authorization.rb
class NotAdminAuthorization < ActiveAdmin::AuthorizationAdapter

  def authorized?(action, subject = nil)
   false
  end

end

然后

config.authorization_adapter = "NotAdminAuthorization"

和其他您可以定义命名空间切换

ActiveAdmin.setup do |config|
  config.namespace :admin do |ns|
    ns.authorization_adapter = "NotAdminAuthorization"
  end
  config.namespace :my_user do |ns|
    ns.authorization_adapter =  ActiveAdmin::PunditAdapter
  end
end

然后像这样

ActiveAdmin.register Post, namespace: :my_user