Php 基本yii2模板的RBAC

Php 基本yii2模板的RBAC,php,yii2,rbac,Php,Yii2,Rbac,我想创建一个应用程序,其中只有管理员可以执行所有crud操作,但其他用户只能创建和更新帖子。我确实找到了基于rbac的教程,但只针对高级模板,但我使用的是基本模板。我也遵循了yii2指南,但我不太理解它,比如执行./yii rbac/init console命令。如何操作?首先在模型文件夹中创建一个名为PermissionHelpers的助手类: namespace app\models; use Yii; class PermissionHelpers { public stati

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

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

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();
                        }
                ],
            ],
        ],
}
现在,您需要在DB中使用role=100更新您自己,并且您已经设置好了


我自己也在使用高级模板,所以可能会对名称空间等进行一些小的更改。但这应该很容易理解。祝你好运

你好,乔根。然后我们可以在yii2基本版本中使用RBAC。它是?因为,在阅读Yi2 rbac教程时,我发现rbac是针对Yi2高级版本的。我也有同样的问题。我必须在哪里声明角色为100的DB?在config/db.php?@NanaPartykar抱歉,我不再使用yii2.Ok@Raj编写代码。NP谢谢。此链接肯定会帮助您详细了解并在Yii2中实现RBAC