ACL beforeFind BeforeSave访问控制


YII ACL beforeFind BeforeSave Access controll

目前我正在实现自己的ACL系统。为了限制数据库操作,我从ActiveRecord 中重写了beforeSave 函数

我将我的函数实现为默认的模型类。

class Event extends ACL
{
...
}

到目前为止一切顺利。在我的数据库中,我有一个特权表,在那里我存储用户、组、创建者或自我角色,这些角色与特定表的操作有关。我使用来自yii的标准RBAC进行基于用户级别的页面限制,因此我不必在每次页面加载时检查所有权限。ACL行为仅用于与数据库相关的目的。例如,如果一个用户想要查看post/someid/view,而他没有特定的post访问权限,则不授予。

举例角色:Group谁:4动作:insert表:Event

现在id为4的组有权限插入到事件表中。这部分很好,现在我想限制某些用户搜索数据库中的表。同样,如果'role'是'user'。在文档中我找不到类似beforeFind的东西。

有人知道我在哪里可以入侵系统并控制让我们称之为beforeFind函数吗?

您可能必须从您自己的类而不是从framework'db类派生基于ActiveRecord的类。如果你这样做了,那么你可以在任何你想要的地方/方式添加检查。

在理论上,你应该能够摆脱仅仅覆盖find() -函数,并禁止它返回一个ActiveQuery实例。不幸的是,框架函数本身不会检查它们是否获得了实例,并且无论如何都会调用它的方法。

实际上,您将不得不重写其余部分(line findOne等)。这仍然使人们有可能使用默认的ActiveRecord或db连接本身。

老实说,我看不出这么低的安全性有什么用。而且我相当肯定,无论你需要做什么来获得这个"安全",它都会给维护它的人带来地狱。