【发布时间】:2014-06-23 07:25:54
【问题描述】:
使用CanCan,可以在全局before_filter(在application_controller)中调用load_and_authorize_resource 辅助方法。这将确保所有 ActiveAdmin 控制器操作也得到固有的授权。
但是有了Pundit,就没有load_and_authorize_resource这样的辅助方法了。所有 Pundit 文档和教程都谈到在每个操作中调用 authorize。我可以在每个动作中调用授权。但在 ActiveAdmin 中,默认情况下不会公开这些操作。我是否应该打开每个控制器中的每个操作,然后调用authorize,然后调用super?
这似乎是错误的。那么,有人可以告诉我如何使用 Pundit 来授权 ActiveAdmin 中的操作吗?
更新:
我知道 Pundit 授权适配器。我正在使用 AA 的主分支,并且我已将 AA 配置为使用 Pundit 适配器,如 here 所述。我的问题是:如何使用适配器?通过设置config.authorization_adapter = ActiveAdmin::PunditAdapter,它是否会自动调用ActiveAdmin中每个操作的授权?我不这么认为。
例如,在 CanCan 中,即使设置了config.authorization_adapter = ActiveAdmin::CanCanAdapter,您仍然需要将load_and_authorize_resource 设置为全局 before_filter 才能自动授权所有 AA 操作。
【问题讨论】:
-
对我来说这很容易。我已将 Pundit 模块包含到 ApplicationController,将 PunditAdapter 添加到 ActiveAdmin 配置并为所有模型创建策略。它就像一个魅力!
标签: ruby-on-rails activeadmin cancan pundit