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