laravel-permission 角色权限控制

本文介绍了laravel-permission包在角色权限控制中的应用,包括如何添加角色和权限,直接给用户添加和删除权限,通过角色使用权限,以及在何处进行权限限制。总结提到,laravel-permission因其易搜索性而被选用,尽管其他角色权限控制也有类似功能,但维护用户、角色和权限的关系可以自定义实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先还是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');

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值