Cancancan ActiveAdmin:跳过 :create 的授权
Cancancan ActiveAdmin: skip authorization for :create
我在 ActiveAdmin 中使用 Cancancan 进行授权。
一切正常,除了 :create。当创建一个新的管理员时,cancancan 将检查是 admin_user.id = id。但是,ActiveAdmin 使 id = nil,所以我无法创建新的管理员。
include CanCan::Ability
def initialize(admin_user)
can :manage, AdminUser, id: admin_user.id
....
end
end
我的解决方案是每个人都可以跳过创建授权。
我的应用程序控制器:
class ApplicationController < ActionController::Base
load_and_authorize_resource
skip_authorize_resource :only => :new
end
但它什么也没做。请帮忙!
您可以像这样指定哪些操作需要授权...
def initialize(admin_user)
can [:edit, :destroy], AdminUser, id: admin_user.id
end
只需 replace/add 到 [:edit, :destroy]
即可执行您需要该授权的任何操作。
如果您希望所有管理员用户都能够对 AdminUser 执行操作...
can :some_action, AdminUser
我在 ActiveAdmin 中使用 Cancancan 进行授权。 一切正常,除了 :create。当创建一个新的管理员时,cancancan 将检查是 admin_user.id = id。但是,ActiveAdmin 使 id = nil,所以我无法创建新的管理员。
include CanCan::Ability
def initialize(admin_user)
can :manage, AdminUser, id: admin_user.id
....
end
end
我的解决方案是每个人都可以跳过创建授权。 我的应用程序控制器:
class ApplicationController < ActionController::Base
load_and_authorize_resource
skip_authorize_resource :only => :new
end
但它什么也没做。请帮忙!
您可以像这样指定哪些操作需要授权...
def initialize(admin_user)
can [:edit, :destroy], AdminUser, id: admin_user.id
end
只需 replace/add 到 [:edit, :destroy]
即可执行您需要该授权的任何操作。
如果您希望所有管理员用户都能够对 AdminUser 执行操作...
can :some_action, AdminUser