thinkPHP5使用Rabc实现权限管理(3)
当createPermission方法中包含了主键id时为编辑权限节点
(3)创建角色&给角色分配权限
//实例化rbac $rbac = new Rbac(); //创建角色&给角色分配权限 $rbac->createRole([ 'name' => '内容管理员', 'description' => '负责网站内容管理', 'status' => 1 ], '1,2,3');
当createRole方法的第一个参数中包含了主键id时为编辑角色,第二个参数为权限节点的id拼接的字符串
(4)给用户分配角色
//实例化rbac $rbac = new Rbac(); //给用户分配角色 $rbac->assignUserRole(1, [1]);
第一个参数为用户id,第二个参数为角色id的数组,此方法会先删除用户之前分配的角色,然后重新给用户分配角色
(5)获取权限分组列表
//实例化rbac $rbac = new Rbac(); //获取权限分组列表 $rbac->getPermissionCategory([['status', '=', 1]]);//参数为权限分组表的条件
(6)获取权限列表
//实例化rbac $rbac = new Rbac(); //获取权限列表 $rbac->getPermission([['status', '=', 1]]);//参数为权限表条件
(7)获取角色列表
//实例化rbac $rbac = new Rbac(); //获取角色列表 $rbac->getRole([], true);
第一个参数为role表的条件,第二个参数为true时查询角色分配的所有权限id
(8)删除权限相关方法
删除权限分组 $rbac->delPermissionCategory([1,2,3,4]); 删除权限 $rbac->delPermission([1,2,3,4]); 删除角色 $rbac->delRole([1,2,3,4]);
(9)权限验证
[1]service方式
service方式因为要用到session一般要依赖于cookie,在用户登录后获取用户权限并将用户权限进行缓存
$rbac->cachePermission(1);//参数为登录用户的user_id,返回值为用户权限列表
验证,判断用户对于指定的节点是否具有权限:
$rbac->can('article/channel/list');
[2]jwt方式
jwt方式在前后端分离结构用的比较普遍。在用户登录后需要获取token,将下面方法获取到的token传递到前端
$rbac->generateToken(1);//第一个参数为登录的用户id,第二个参数为token有效期默认为7200秒,第三个参数为token前缀 返回结果为
返回值示例如下:
array(3) { ["token"] => string(32) "4c56b80f06d3d8810b97db33a1291694" ["refresh_token"] => string(32) "17914241bde6bfc46b20e643b2c58279" ["expire"] => int(7200) }
内容版权声明:除非注明,否则皆为本站原创文章。