[英]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.