【问题标题】:RBAC for basic yii2 template用于基本 yii2 模板的 RBAC
【发布时间】:2014-12-18 19:05:12
【问题描述】:

我想创建一个只有管理员才能执行所有 crud 操作但其他用户只能创建和更新帖子的应用程序。我确实找到了基于 rbac 的教程,但仅适用于高级模板,但我使用的是基本模板。我也遵循了 yii2 指南,但我不太了解它,比如执行 ./yii rbac/init 控制台命令。我该怎么做?

【问题讨论】:

  • 嗨@Raj。我也有同样的问题。我必须在哪里声明角色 = 100 的数据库?在 config/db.php 中?
  • @NanaPartykar 抱歉,我不再在 yii2 中编码。
  • 好的@Raj。 NP。谢谢。
  • freetuts.org/tutorial/view?id=6这个链接一定会帮助你详细学习并在Yii2中实现RBAC

标签: php yii2 rbac


【解决方案1】:

首先在模型文件夹中创建一个名为 PermissionHelpers 的 Helper 类:

namespace app\models;
use Yii;

class PermissionHelpers {

    public static function requireAdmin() {

        if(Yii::$app->user->identity->role == 100)
        {
            return true;
        }
        else return false;
    }
} 

然后更新你的控制器:

// at top with your other use
use yii\filters\AccessControl;
use app\models\PermissionHelpers;


// first function inside the class
public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'only' => ['privateaction1', 'privateaction2'],
            'rules' => [
                [
                    'actions' => ['privateaction1', 'privateaction2'],
                    'allow' => true,
                    'roles' => ['@'],
                    'matchCallback' => function($rule, $action) {
                            return PermissionHelpers::requireAdmin();
                        }
                ],
            ],
        ],
}

现在您需要在数据库中更新自己,角色 = 100,然后您就设置好了。

我自己使用的是高级模板,因此可能会对命名空间等进行一些小改动。但这应该很容易弄清楚。祝你好运!

【讨论】:

  • 嗨@Jorgen。然后我们可以在 yii2-basic 版本中使用 RBAC。是吗 ?因为,在阅读 yii2-rbac 教程时,我发现 RBAC 是针对 yii2-advanced 版本的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
相关资源
最近更新 更多