Yii2 RBAC检查权限,而无需在控制器中执行每个操作

人口统计

如何在一个地方检查权限?
我不想单独检查每个功能。

我的RBAC控制器。我想检查控制器中所有操作的登录用户权限。现在我必须Yii::$app->user->can('...')单独使用控制器中的每个动作

$admin = $auth->createRole('Admin');
$moderator = $auth->createRole('Moderator');

$createPost=$auth->createPermission('createPost');
$updatePost=$auth->createPermission('updatePost');
$deletePost=$auth->createPermission('deletePost');
$createCategory=$auth->createPermission('createCategory');
$updateCategory=$auth->createPermission('updateCategory');
$deleteCategory=$auth->createPermission('deleteCategory');


$auth->add($admin);
$auth->add($moderator);
$auth->add($createPost);
$auth->add($updatePost);
$auth->add($deletePost);
$auth->add($createCategory);
$auth->add($updateCategory);
$auth->add($deleteCategory);

在这里,我为角色分配了权限,但是我从不使用这些权限,因为在behavior->(例如您的示例)中手动编写

如果这不起作用,目标是在RBAC中创建许可证吗?如果我想添加高级用户。我只能在控制器(例如actionPremium)中添加操作,并在高级用户的行为操作中设置。

例如

动作=> ['premium']角色=> ['premiumUser']

还有一个问题。在行为上如何自定义消息错误?

$auth->addChild($admin,$moderator);
$auth->addChild($admin,$createCategory);
$auth->addChild($admin,$updateCategory);
$auth->addChild($admin,$deleteCategory);
$auth->addChild($moderator, $createPost);
$auth->addChild($moderator, $updatePost);
$auth->addChild($moderator, $deletePost);


$auth->assign($admin,1);
$auth->assign($moderator,2);
scaisEdge

您可以为行为中的所有操作分配控制器中允许的权限

public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['index','view'], // these action are accessible 
                                                   //only the yourRole1 and yourRole2
                    'allow' => true,
                    'roles' => ['yourRole1', 'yourRole2'],
                ],
                [    // all the action are accessible to superadmin, admin and manager
                    'allow' => true,  
                    'roles' => ['superAdmin', 'admin', 'manager'],
                ],   
            ],
        ],        
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'delete' => ['post'],
            ],
        ],
    ];
}

您在行为中分配的角色是用于操作..允许或拒绝..如果角色在行为中具有允许的操作,则他可以执行,否则他将获得许可被拒绝403 ..(未授权)..

您也可以使用以下命令检查程序代码中的角色

if ( Yii::$app->User->can('admin') ){
    .....
    yourdCode
    ....
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Yii2中的验证

来自分类Dev

Yii2中的验证

来自分类Dev

Yii2 中的时区

来自分类Dev

Yii2:如何记录每个请求的控制器和操作ID?

来自分类Dev

覆盖控制器中的Yii2 assetManager配置

来自分类Dev

Yii2在控制器中获取当前动作

来自分类Dev

覆盖控制器中的Yii2 assetManager配置

来自分类Dev

在yii2中更改状态的控制器动作

来自分类Dev

Yii2:在不同控制器中激活的菜单

来自分类Dev

Yii2访问新控制器中的动作

来自分类Dev

在Yii2中扩展主控制器(或视图)

来自分类Dev

Yii2:在控制台控制器中运行Web操作

来自分类Dev

Yii2 中的模型权限

来自分类Dev

控制器中的自定义操作在yii2中不起作用

来自分类Dev

如何为yii2中的每个控制器方法创建afterAction?

来自分类Dev

检查控制器(Yii2)中的特定提交按钮值

来自分类Dev

检查控制器(Yii2)中的特定提交按钮值

来自分类Dev

yii2控制器操作中的重定向不起作用?

来自分类Dev

是否可以在yii2 PHP框架中私下访问控制器或操作ID

来自分类Dev

Yii2如何从特定视图或控制器操作中包含多个CSS文件

来自分类Dev

无法路由到 Yii2 控制器中的自定义操作

来自分类Dev

Yii2中模块的访问控制

来自分类Dev

RBAC用于基本yii2模板

来自分类Dev

Yii2从URL获取控制器/动作

来自分类Dev

Yii2获取任何控制器-> Id

来自分类Dev

Yii2:设置特定控制器的布局

来自分类Dev

Yii2 Basic: 从控制器动作运行命令

来自分类Dev

Yii2仅验证创建操作

来自分类Dev

隐藏Yii2 GridView操作按钮