【问题标题】:Yii RBAC on per Model Record basisYii RBAC 基于每个模型记录
【发布时间】:2014-09-14 08:21:19
【问题描述】:

我是 Yii 新手,不熟悉 Yii 的 RBAC 功能。我的问题是,是否可以在每个模型记录的基础上使用 RBAC,例如:

表 Project_users:

| user_id | project_id | role  |
================================
|    1    |      1      | admin |   
---------------------------------
|    1    |      2      | member|

在这种情况下,用户 1 可以编辑项目 1 但不能编辑项目 2。我可以在此处使用 Yii 的 RBAC 功能以最少的配置还是需要创建自己的过滤器代码?

【问题讨论】:

  • 你看到the post in yii docs了吗?
  • 还没有,谢谢你的链接。我去看看
  • 只是阅读它,但与我想要实现的内容无关。基本上,我希望 Yii::app()->user->checkAccess 从模型记录中检查,而不是从 users 表中检查。

标签: yii rbac


【解决方案1】:

我在这里提供了类似问题的回复:Yii RBAC: access to specific items/rows

这允许您通过几个步骤创建自定义过滤规则:

  1. 在您的 filters() 覆盖方法中指定“accessControl”标志。
  2. 在您的 accessRules() 方法中,指定对您的自定义函数的引用以执行访问控制检查
  3. 创建访问控制函数来执行检查并相应地返回 true 或 false 以指定是允许还是不允许访问。

您可以在链接问题中查看代码示例。

【讨论】:

  • 您好工匠,我按照您的答案链接,但我认为它不会从用户以外的表格中检查。我深入研究了 Yii 的代码,看起来我需要创建一个新组件来扩展 CDbAuthManagerCAuthManager 并分配表名和覆盖方法。
  • 由于验证发生在自定义方法中,您几乎可以决定从哪个表读取。
猜你喜欢
  • 2020-05-03
  • 2014-12-26
  • 2015-02-16
  • 2012-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多