首先还是t贴出GitHub的地址
https://github.com/spatie/laravel-permission
然后说一下使用心得
先说数据库的表结构把一共有6张表,也可以根据可以喜好添加,修改删除表,不过我们还是先列出表!
首先是用户表(users)不用说了都是一些基本信息包括名字,邮箱什么的!
权限表(permissions)权限表就是存放所有权限的一张表,权限可以是控制器访问权限,接口访问权限,model访问权限,在这里我们只讨论接口访问权限!
角色表(roles)角色表就是存放你所有的角色,角色的名字为索引!
基本的表有了,那他们是怎么关联的呢?请继续往下看!
用户拥有权限表(model_has_permissions)這张表记录的就是user_id,permission_id的多对多的关系表,用户直接获取权限。
用户拥有角色表(model_has_roles)这张表记录的用户拥有的权限,表里有user_id,role_id这个也是记录用户和角色多对多的关系表,也可以理解为中间表!
角色拥有权限表(role_has_permissions)這张表记录的是角色拥有哪些权限,表里就2个字段role_id,permission_id!也可以根据需要进行拓展!
下面给出一张图,来直观的看下各个关联关系:
用户直接拥有权限,model_has_permissions,用户拥有角色那么就是model_has_role然后到roles表中role_has_permission
如何添加角色(依赖包提供了方法)
$role = Role::Create(['name' => 'add_title']);
Create有几个参数呢?原方法中有一个name和guard_name,如下面代码
use Spatie\Permission\Models\Role;
public static function create(array $attributes = []) { $attributes['guard_name'] = $attributes['guard_name'] ?? config('auth.defaults.guard');