簡體   English   中英

cancancan 功能返回 false 但仍可訪問?

[英]cancancan ability returns false but is still accessible?

我有一個標准的康康康設置。 文章approved有一個屬性 authorized 。 然后標准設置:

# articles controller

load_and_authorize_resource only: [:index, :show] 

def show 
end
# ability.rb

    # Solution 1
    # can :show, Article, { approved: true }


    # Solution 2
    can [:show], [Article] do |article|
      article.approved? 
    end

當我嘗試任一解決方案時,結果會在控制台或調試器中按預期返回(即,如果文章已獲批准,則ability.can?(:show, @article)返回 true,否則返回 false)。

奇怪的是,當上面返回的false清楚地表明它不應該被訪問時,仍然可以在瀏覽器中訪問顯示視圖。

我想不通為什么?

在另一個論壇中進行了很多幫助調試后,我們從未弄清楚為什么上述方法不起作用。 但是通過不使用load_and_authorize_resource來實現所需的行為,而是將其放在 controller 操作中:

authorize! :show, @article

我很想知道為什么這種方法有效,但最初的方法沒有。

暫無
暫無

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

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