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

ruby-on-rails-3 – Rails 3限制访问权限,因此用户只能更新其数据

这似乎应该相当简单,因为它需要很多.我检查用户是否登录正常,但一旦用户登录,他们可能会改变其他人的帐户.例如:说ID为1的用户登录,他们将/ users / 2 / edit作为url.这将向他们显示用户2s数据并允许他们修改它.当然我可以改变控制器中的编辑动作来使用这样的东西……
def edit
    @user = User.find(current_user.id)
  end

其中current_user在控制器中设置,所以用户总是那个登录的人.如果你只有几个控制器有几个动作,这很好,但如果你有很多,可能会很痛苦.似乎应该有一种方法来全局限制,因此用户只能更新自己的数据,无论他们使用什么操作或控制器.

有没有办法将用户限制为所有操作的数据?

解决方法

我认为你的问题实际上是关于如何进行授权.此外,我怀疑您可能会将“belongs_to”模型关联名称与授权混为一谈. “belongs_to”关联名称描述了一个模型与另一个模型的关系,但它并不暗示应用程序如何控制对任何模型的访问.

Hishalv是正确的,使用控制器过滤器是管理授权的正确方法.这是正确的MVC方式.给Rails Guide一个很好的阅读,让你明白.

然后,您可以考虑使用像CanCan这样的授权宝石,或根据Hishalv的建议滚动自己的宝石. CanCan与Devise等认证宝石一起运作良好.如果你自己动手,那么在ApplicationController中放一个辅助方法并以一种无论模型如何工作的方式编写它都是一件简单的事情.

原文地址:https://www.jb51.cc/ruby/267112.html

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

相关推荐