繁体   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