我只想知道如何使用DbManager为yii2中的一组用户分配角色,因为我已经看过很多教程,但大多数教程都是面向高级模板而我正在使用基本模板。 他们提到像普通,后端这样的文件夹,我在基本模板中找不到 你能给我一个我可以遵循的教程或指导吗?
感谢
答案 0 :(得分:0)
请看这个页面:http://www.yiiframework.com/doc-2.0/guide-security-authorization.html
这将帮助您为RBAC添加DbManager。首先,您需要创建不同的角色,然后您需要为不同的角色添加权限。
然后,当您创建用户时,您需要为该用户分配一个角色,他们将拥有这些权限。
以下是文档中用于创建角色和权限的代码段。
<?php
namespace app\commands;
use Yii;
use yii\console\Controller;
class RbacController extends Controller
{
public function actionInit()
{
$auth = Yii::$app->authManager;
// add "createPost" permission
$createPost = $auth->createPermission('createPost');
$createPost->description = 'Create a post';
$auth->add($createPost);
// add "updatePost" permission
$updatePost = $auth->createPermission('updatePost');
$updatePost->description = 'Update post';
$auth->add($updatePost);
// add "author" role and give this role the "createPost" permission
$author = $auth->createRole('author');
$auth->add($author);
$auth->addChild($author, $createPost);
// add "admin" role and give this role the "updatePost" permission
// as well as the permissions of the "author" role
$admin = $auth->createRole('admin');
$auth->add($admin);
$auth->addChild($admin, $updatePost);
$auth->addChild($admin, $author);
// Assign roles to users. 1 and 2 are IDs returned by IdentityInterface::getId()
// usually implemented in your User model.
$auth->assign($author, 2);
$auth->assign($admin, 1);
}
}
此RbacController.php文件将放在项目基础中的commands文件夹中。您可以通过致电php yii rbac/init
。
然后,您实际上需要检查用户是否具有某些权限。因此,当经过身份验证的用户执行操作时,您可以调用类似
的内容if (\Yii::$app->user->can('createPost')) {
// create post
}
其中基于can方法的字符串是您要检查的权限。