如何在一个地方检查权限?
我不想单独检查每个功能。
我的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);
您可以为行为中的所有操作分配控制器中允许的权限
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] 删除。
我来说两句