gpt4 book ai didi

ruby-on-rails - 如何使用 Pundit 授权 ActiveAdmin 资源?

转载 作者:行者123 更新时间:2023-12-04 21:27:47 27 4
gpt4 key购买 nike

CanCan , load_and_authorize_resource可以在全局 before_filter 中调用辅助方法(在 application_controller 中)。这将确保所有 ActiveAdmin Controller 操作也得到固有的授权。

但与 Pundit ,没有这样的load_and_authorize_resource辅助方法。所有 Pundit 文档和教程都谈到调用 authorize在每一个 Action 中。我可以在每个 Action 中调用授权。但在 ActiveAdmin 中,默认情况下不会公开这些操作。我应该打开每个 Controller 中的每个操作,然后调用 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 操作。

最佳答案

ActiveAdmin 的 master 现在包括一个 Pundit 授权适配器。如果您使用 ActiveAdmin 的主分支,则可以轻松使用 Pundit。否则您可以手动添加现有的pundit_adapter.rb到旧版本的 ActiveAdmin,尽管可能需要做更多的工作。

ActiveAdmin PR #2857有关如何添加适配器的更多上下文和详细信息。

在 ActiveAdmin 设置为使用 Pundit 授权适配器后,它会检查默认资源操作的授权:显示、索引、编辑、更新、新建、创建、销毁。任何自定义操作都必须手动授权。

要检查的一个细节是您的 Pundit 策略定义了 ActiveAdmin 期望的方法。有一个template可用作起点。 ActiveAdmin authorization docs也可能有帮助。

关于ruby-on-rails - 如何使用 Pundit 授权 ActiveAdmin 资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23498813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com