ruby-on-rails - Cancancan ActiveAdmin:跳过对 :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
[:edit, :destroy]
只需使用您需要该授权的任何操作 替换/添加到。
如果您希望所有管理员用户都能够对 AdminUser 执行操作...
can :some_action, AdminUser
推荐阅读
- php - 我想使用下面的查询来获取数据,但它不工作
- ios - 在 CollectionView 中获取可见的单元格索引路径
- json - YouTube API v3 在 JSON 中没有响应 Alamofire
- bootstrap-4 - 如何在 rails 6(github/rails HEAD 上的 Rails 6.0.0.beta3)应用程序上安装 bootstrap 4?
- azure-devops - CD 管道中的任务以在每次部署之前编辑或转换某些文件
- php - 如何从 PHP 中的 DateTimeInterface 创建 DateTime?
- java - 在新窗口中弹出警报
- ios - 按钮和锚标签悬停和活动在 Iphone 的 Chrome 上不起作用
- html - SVG 圆圈上的文字
- json - 当我尝试以角度 2 显示 json(数组到对象中)时出现问题