2
我已经有rails_authorization_plugin启动并使用模型运行。何时何地实施ACL
在我的网站上实施权限检查的最佳方式是什么?
我有一个复杂的条件,当一个对象的实例应该是可见的,是否有一种有效的方式将它们链接在一起,所以我没有获取多组数据,并且由于循环返回数据而磨损了我的数据库过滤它?
我已经有rails_authorization_plugin启动并使用模型运行。何时何地实施ACL
在我的网站上实施权限检查的最佳方式是什么?
我有一个复杂的条件,当一个对象的实例应该是可见的,是否有一种有效的方式将它们链接在一起,所以我没有获取多组数据,并且由于循环返回数据而磨损了我的数据库过滤它?
有一种有效的方法:确保只运行一个查询,并且运行的查询完全返回所需的对象。当然,说起来容易做起来难。
处理此问题的一种方法是使用范围构建您的条件。
@posts = @thread.posts.not_deleted.this_week.not_secret
如果所有这些方法都是范围,那将只有一个查询。
如果您的条件过于复杂,无法轻松使它们成为范围,那么您应该编写一个方法来返回用户的可见对象。
class User
def posts_for(thread)
if is_admin?
thread.posts
elsif thread.owner == self
thread.posts.not_deleted
else
Post.find(:all, :conditions => something_complicated(thread, self))
end
end
end
我的应用程序有很多类型的对象,而且非常复杂的权限的,所以我们捕捉的method_missing这样的电话,他们的路线,知道如何使所有不同的查询权限库。
嗯,我正在使用非常简洁的rails acl插件,但我不认为我可以用它来链接,我可以吗? 是否有任何ACL插件的行为几乎像是activerecord的扩展? rails acl的文档提供了很多开始,但实际上实施安全检查让我猜测很多。 感谢您的帮助,真的很好的建议已经在这里! – 2009-07-09 17:01:42