gpt4 book ai didi

ruby-on-rails - 索引中的权威授权

转载 作者:行者123 更新时间:2023-12-03 15:38:39 25 4
gpt4 key购买 nike

我最近阅读了pundit gem的README,发现它们从未在 Controller 中授权索引 View 。 (相反,他们使用范围)。

他们为此提供了充分的理由,因为索引页通常包含元素列表,通过控制生成的列表,您可以有效地控制页面上的数据。但是,有时可能希望阻止对索引页本身的访问。 (而不是允许访问空白的索引页。)我的问题是执行此操作的正确方法是什么?

到目前为止,我提出了几种可能性,并开设了以下类(class):

  • 模型MyModel
  • Controller MyModelsController
  • 策略MyModelPolicy

  • 在 Controller 的索引方法中,推荐的解决方法如下:
    def index
    @my_models = policy_Scope(MyModel)
    end

    然后,这将允许访问索引页面,但将结果过滤为仅使用者可以看到的内容。 (例如,没有访问权限就没有结果。)

    但是,为了阻止访问索引页面本身,我得出了两种不同的可能性:
    def index
    @my_models = policy_Scope(MyModel)
    authorize @my_models
    end

    或者
    def index
    @my_models = policy_Scope(MyModel)
    authorize MyModel
    end

    其中哪一条是正确的路径,或者有其他替代方法会更可取?

    最佳答案

    class MyModelPolicy < ApplicationPolicy
    class Scope < Scope
    def resolve
    if user.admin?
    scope.all
    else
    raise Pundit::NotAuthorizedError, 'not allowed to view this action'
    end
    end
    end
    end

    关于ruby-on-rails - 索引中的权威授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39148163/

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