谁一开始就是大神?

RBAC[2.0]

$auth = Yii::$app->authManager;

    // 添加 "createPost" 权限
    $createPost = $auth->createPermission('createPost');
    $createPost->description = 'Create a post';
    $auth->add($createPost);

    // 添加 "updatePost" 权限
    $updatePost = $auth->createPermission('updatePost');
    $updatePost->description = 'Update post';
    $auth->add($updatePost);

    // 添加 "author" 角色并赋予 "createPost" 权限
    $author = $auth->createRole('author');
    $auth->add($author);
    $auth->addChild($author, $createPost);

    // 添加 "admin" 角色并赋予 "updatePost"
    // 和 "author" 权限
    $admin = $auth->createRole('admin');
    $auth->add($admin);
    $auth->addChild($admin, $updatePost);
    $auth->addChild($admin, $author);

    // 为用户指派角色。其中 1 和 2 是由 IdentityInterface::getId() 返回的id (译者注:user表的id)
    // 通常在你的 User 模型中实现这个函数。
    $auth->assign($author, 2);
    $auth->assign($admin, 1);

上面是权威指南的代码,我想问一下上面写的createPost是指的控制器里的方法还是说控制器,假如说不同的控制器里面的方法名称都差不多或者有重复的怎么办?求大神

首先,从思想上不要把RBAC想的太神秘。
说白了,它其实就是类似,你有某个锁的钥匙,然后你才能打开它,一样的道理。
RBAC文档样例中的 createPost 也是一个钥匙。至于锁要放在哪边,就看你的业务逻辑了,可以只用一次 也可以多个地方用一个锁。
由于常见的业务都跟 用户 和 控制器 相关,所以我们才会习惯性的把 控制器路由的路径(比如 /module/controller/action 之类的) 设置为钥匙(权限名称)。
这样,当你访问某个控制器时,没钥匙,就会提示权限不足。
建议多结合框架进行测试,验证之后 心里就有底了 😉
createPost 就是一个 Permission 的名字而已

可以用控制器和方法名结合!仅仅是一个名称而已,只要你知道他是表示那个控制器那个方法就可以了。

$createPost 的值可以是角色可以是权限可以是url路由,保存在auth_item表里,其中的name是PRIMARY,不能重复
嗯嗯。平时可以多看看库名和代码的联系

赞(0) 打赏
未经允许不得转载:菜鸟之家 » RBAC[2.0]

评论 抢沙发

登录

找回密码

注册