【问题标题】:CanCanCan for custom controllers with not modelsCanCanCan 用于没有模型的自定义控制器
【发布时间】:2017-03-16 13:27:00
【问题描述】:

我知道如何在 Rails 5 中使用 CanCan 限制 RESTful 应用程序的访问。

我的一些操作和控制器不是 RESTful。

例如,我有一个带有 user_report 方法的 report_controller。没有直接链接到此控制器/动作的模型。

class ReportController < ApplicationController

  load_and_authorize_resource

  def user_report

  end

end

如何在我的能力.rb 文件中定义一项能力来限制对此操作的访问?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 cancan cancancan


    【解决方案1】:

    ability.rb 中定义这样的自定义能力:

    can :view_reports, MyClass
    

    在您的 user_report 操作中,手动授权该功能:

    def user_report
      authorize! :view_reports, MyClass
      # ...
    end
    

    另外,从ReportController 中删除load_and_authorize_resource,因为您是直接调用authorize!

    【讨论】:

    • 但是没有模型'User'。
    • 然后使用不同的模型或类。这并不重要,因为您没有针对特定实例进行授权。
    • 根据stackoverflow.com/questions/34763269/…,您可能想尝试使用false 作为传递的类值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多