如何在一个地方查看权限?
我不想单独检查每个功能。
我的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);
这里我为角色分配权限,但我从不使用这些权限,因为在行为中手动编写>(就像你的例子)
什么是目标,在RBAC中创建权限,如果这不起作用?如果我想添加高级用户。我只能在控制器中添加动作,例如actionPremium并为高级用户设置行为操作。
例如
行动=> [ '溢价'] 角色=> [ '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);
答案 0 :(得分:4)
您可以为行为中的所有操作分配控制器中允许的权限
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
....
}