1

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

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

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

4

3 回答 3

2

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

Lockdown 是 RubyOnRails (ver 2.x) 的授权系统。它旨在处理非常精细的访问控制的简单公共与私有配置。

于 2009-11-03T22:23:44.700 回答
1

Ryan 在Railscast #19中谈到了这个问题(RY 通过拥有管理员控制器和普通用户控制器)和更好的解决方案。

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

于 2009-11-03T21:35:31.653 回答
1

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

于 2009-11-04T05:01:54.577 回答