繁体   English   中英

Ruby on Rails以更优雅的方式来验证用户只能编辑自己的内容

[英]Ruby on rails more elegant way to authenticate that users can edit only their own content

我目前正在验证用户只能通过以下方式编辑自己的内容

@posts = current_user.posts.find(params[:id])

有没有更简单的方法可以在所有控制器上做到这一点?

我有一个before_filter,要求用户必须登录,但是它不检查单个用户是谁。

我想知道是否有一个更优雅的解决方案,只需要对before_filer方法进行一次编辑,而不是将current_user方法放在每个需要保护的模型之前。

CanCan是另一个提供授权功能的宝石。 所有这些都在一个ruby文件中进行管理,然后只需一行即可合并到控制器中。 还有许多视图助手,因此可以使用<% if can? :update, @article %> <% if can? :update, @article %>在您的视图中。

我在某个时候使用了一个框架,该框架可以让您在查询中添加强制条件,但是我认为Rails不可能(本来)做到这一点。 可能带有插件。

但是,有时您将需要查询单个用户的上下文以外的内容,因此您需要一种方法来覆盖它,可能使用before_filter的:except参数。 但是然后,您必须记住current_user在例外方法中确实需要针对用户的事情,而忘记指定它可能非常危险。

通过以某种方式覆盖模型的“查找”功能,您可以在绝大多数情况下节省一些键入内容,但是您还将使异常变得极为丑陋,并可能带来危险。

你检查过宙斯盾了吗? 如果您不愿意手工编码,则可以检查盾牌。 符合您的要求。 它也有大量的文档。 http://github.com/makandra/aegis

看到这个:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM