簡體   English   中英

CanCanCan gem:load_and_authorize_resource和控制器的索引動作

[英]CanCanCan gem: load_and_authorize_resource and a controller's index action

class TopicsController < ApplicationController
  load_and_authorize_resource # CanCanCan gem

  def index
    # @topics = Topic.visible_to(current_user)
  end
...
end

據我了解, load_and_authorize_resource加載了CRUD操作所需的模型實例。 這是否不包括controller#index操作(實例變量為復數-在我的情況下為@topics )?

除非我在index操作中取消注釋該行,否則這對我不起作用。

如果使用支持的ORM(包括ActiveRecord)並定義無障礙能力,則CanCanCan確實會從版本1.4開始為索引操作加載實例變量。

在以前的版本中, load_and_authorize_resource僅使用:id參數(即CRUD操作)為那些路由加載單個實例變量,如您所述。 但是,它確實授權所有操作,但是由於它不會為索引操作加載實例變量,因此它僅基於模型進行授權。 這意味着它將忽略該模型的能力中放置的任何條件。

索引動作

從1.4版本開始,index操作將使用accessible_by加載收集資源。

def index
  # @products automatically set to Product.accessible_by(current_ability)
end

通過https://github.com/ryanb/cancan/wiki/authorizing-controller-actions#load_resource

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM