微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CanCan 能力忽略应该禁止访问的条件? 我认为正在发生的事情

如何解决CanCan 能力忽略应该禁止访问的条件? 我认为正在发生的事情

ability.rb

can :edit,Physician,user_id: user.id

如果我的理解是正确的,这应该查看控制器中的physician 实例,取其user_id 属性,并且仅在匹配当前用户id 时才允许访问。

相反,任何人都可以访问其他人的 edit 操作! (坏)

我认为正在发生的事情

我有一个用于编辑操作的自定义路由:

get 'physicians/:physicianname/edit' => 'physicians#edit'

在编辑控制器中:

@physician = Physician.find_by(physicianname: params[:physicianname])

由于我没有以通常的方式查找医生(使用 :id),我认为一些康康魔术/认设置没有按应有的方式应用。

但我不知道为什么,或者我必须做些什么才能让它发挥作用。

解决方法

我认为您错过了应该引发未经授权响应的检查。在你的行动中,你应该有这样的东西:

  @physician = Physician.find_by(physicianname: params[:physicianname])
  authorize! :edit,@physician

看看gem wiki

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。