使用身份验证管理编辑/销毁/新链接的最佳方法是什么?

时间:2009-11-03 21:28:53

标签: ruby-on-rails authentication authorization crud

我是Rails的新手,我正在尝试创建一个标准的CRUD rails应用程序来显示文本帖子。它非常类似于博客,我希望经过身份验证的用户能够编辑和销毁帖子,而网站访问者只能查看和浏览现有帖子。

我想知道管理这个的最佳方法是什么。到目前为止,我一直在使用两个控制器,第一个具有before_filter,因此每个路由都需要身份验证,并且相关的视图具有编辑/销毁/新链接。第二个控制器没有身份验证过滤器,并且视图没有用于编辑或销毁帖子的链接。

此解决方案有效,但我认为它不是很干。我有一种感觉,如果坚持这种情况,随着我添加更多功能,事情将变得越来越复杂。有没有更好的方法来管理这个?我敢肯定这一定是常见的问题。

3 个答案:

答案 0 :(得分:2)

你应该尝试锁定:http://stonean.com/page/lockdown

  

Lockdown是RubyOnRails(ver 2.x)的授权系统。它是   旨在处理一个简单的公共vs   私人配置非常好   粒度访问控制。

答案 1 :(得分:1)

Ryan在Railscast #19中讨论了这个问题(通过管理员控制器和常规用户控制器实现RY)以及更好的解决方案。

顺便说一句,我希望您的第二个控制器(没有授权的before_filter)没有更新或销毁操作。即使您的视图中没有链接,不道德的人也可能会创建一个混乱您的数据的请求。

答案 2 :(得分:1)

我使用role_requirement来控制用户通过“admin”和“user”角色访问给定的控制器方法。我使用手动lib来确保给定用户有权访问/操作特定数据。例如,如果您没有“拥有”某个帖子(比如#3),但是您尝试将其ID放在/ posts / destroy / 3中,那么您将被拒之门外。