?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  
yii2.0 rbac权限学习笔记 [ 2.0 版本 ]
下面介绍一个 yii2.0 的 Rbac 权限设置,闲话少说,直接上代码,
 
1、首先我们要在 组件里面配置一下 Rbac ,如下所示(common/config/main-local.php或者main.php)。
 
'authManager' => [
'class' => 'yii\rbac\DbManager',
'itemTable' => 'auth_item',
'assignmentTable' => 'auth_assignment',
'itemChildTable' => 'auth_item_child',
],
 
当然,在配置里面也可以设置 默认角色,只是我没写。Rbac 支持两种类,PhpManager 和 DbManager ,这里我使用 DbManager 。
yii migrate --migrationPath=@yii/rbac/migrations/
运行此命令生成权限数据表
 
2、配置完毕, 下面我们尝试着创建一个 许可 Permiassion,代码如下
 
public function createPermission($item)
{
$auth = Yii::$app->authManager;
$createPost = $auth->createPermission($item);
$createPost->description = '创建了 ' . $item . ' 许可';
$auth->add($createPost);
}
 
3、好的, 许可我们就创建完成了,下面我们创建一个 角色吧 roles
 
public function createRole($item)
{
$auth = Yii::$app->authManager;
$role = $auth->createRole($item);
$role->description = '创建了 ' . $item . ' 角色';
$auth->add($role);
}
 
4、好的,就是这么简单,不要激动,下面更简单,给角色分配许可,上代码
 
static public function createEmpowerment($items)
{
$auth = Yii::$app->authManager;
$parent = $auth->createRole($items['name']);
$child = $auth->createPermission($items['description']);
$auth->addChild($parent, $child);
}
 
5、好的,分配许可也创建完成了,我操,太尼玛简单了,继续上代码,给角色分配用户
 
static public function assign($item)
{
$auth = Yii::$app->authManager;
$reader = $auth->createRole($item['name']);
$auth->assign($reader, $item['description']);
}
 
6、好的好的,就是这么简单,我自己都他妈不敢相信啊,你相信吗??? 最后一步,验证用户是否有权限
 
public function beforeAction($action)
{
$action = Yii::$app->controller->action->id;
if(\Yii::$app->user->can($action)){
return true;
}else{
throw new \yii\web\UnauthorizedHttpException('对不起,您现在还没获此操作的权限');
}
}
 
好了,一口气都他妈写完了,老爽了。当然,可以创建就一定可以修改和删除,修改和删除都是多表关联操作的, Yii也为我写好了方法,当然你也可以自己去写,都是小意思了。
 
数据库sql文件地址/vendor/yiisoft/yii2/rbac
 
来源:http://blog.sina.com.cn/s/blog_88a65c1b0101izml.html
 
 
  
---------------------------------------------------------------------------------------------
唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。