Laravel中怎么实现RBAC权限管理操作
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Laravel中怎么实现RBAC权限管理操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、建表(用户表、角色表、权限
千家信息网最后更新 2026年11月01日Laravel中怎么实现RBAC权限管理操作
Laravel中怎么实现RBAC权限管理操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1、建表(用户表、角色表、权限表、用户角色表、角色权限表)
CREATE TABLE IF NOT EXISTS mr_role(id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',name varchar(30) NOT NULL COMMENT '角色名')ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='角色表';CREATE TABLE IF NOT EXISTS mr_privilege(id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',name varchar(30) NOT NULL COMMENT '权限名',route varchar(50) NOT NULL COMMENT '权限所有的路由',description varchar(100) NOT NULL COMMENT '权限的描述')ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='权限表';CREATE TABLE IF NOT EXISTS mr_user_role(id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',user_id int(11) NOT NULL COMMENT '用户id',role_id int(11) NOT NULL COMMENT '角色id')ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='用户角色表';CREATE TABLE IF NOT EXISTS mr_role_privilege(id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',role_id int(11) NOT NULL COMMENT '角色id',privilege_id int(11) NOT NULL COMMENT '权限id')ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='角色权限表';
2、在用户模型和角色模型中实现多对多
class User extends Model{ protected $primaryKey = 'id'; protected $table = 'user'; public $timestamps = false; public $guarded = []; public function roles() { return $this->belongsToMany('App\Model\Role', 'user_role', 'user_id', 'role_id')->withPivot('user_id', 'role_id'); }}class Role extends Model{ protected $table = 'role'; protected $primaryKey = 'id'; public $timestamps = false; public $guarded = []; public function privileges() { return $this->belongsToMany('App\Model\Privilege', 'role_privilege', 'role_id', 'privilege_id')->withPivot(['role_id', 'privilege_id']); }}3、将菜单视为公共区域,在app\Providers\AppServiceProvider.php里写
public function boot(){ \View::composer('layout.slide', function($view) { $roles_id = User::find(session('user')['id'])->roles->map(function ($role) { return $role->id; }); // 使用map,最终得到的结果$roles_id = [1, 2, ...] $privileges = []; foreach ($roles_id as $role) { $privileges = array_merge($privileges, Role::find($role)->privileges->map(function ($privilege) { return [$privilege->name, $privilege->route]; })->toArray()); } // 得到的结果,$prpvileges = [['index/..', '列表'], ['', '']] $view->with('privileges', $privileges); });}4、菜单的实现(可以直接遍历一个div,我这里因为有不同的样式,便用了判断)
@foreach ($privileges as $privilege) @if ($privilege[1] == 'key/index' && $privilege[0] == '键名列表') @endif @if ($privilege[1] == 'key/create' && $privilege[0] == '添加键名') @endif @if ($privilege[1] == 'project/index' && $privilege[0] == '项目列表') @endif @if ($privilege[1] == 'project/create' && $privilege[0] == '添加项目') @endif @if ($privilege[1] == 'user/index' && $privilege[0] == '用户列表') @endif @if ($privilege[1] == 'user/create' && $privilege[0] == '添加用户') @endif@endforeach
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
角色
权限
用户
项目
模型
结果
菜单
帮助
管理
不同
清楚
内容
区域
对此
文章
新手
更多
样式
知识
行业
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
江苏根荣互联网科技
新华互联网科技学校
新华互联网科技学院
互联网金融 金融科技
奇酷互联网科技
无线互联网科技
天下捷融互联网科技
四个字互联网科技公司取名
互联网科技股午盘股票涨跌
剑昆互联网络科技有限公司临桂
互联网和黑科技的看法
港股科技和互联网
知域互联网科技有限公司大骗子
开一家科技互联网公司需要多少钱
高科技互联网发展前景如何
互联网方面的科技前沿
互联网科技实习生岗位
互联网科技资金流入
兰石爱特工业互联网科技分公司
互联网科技公司经营范围
北京互联网科技
智网互联网科技
互联网 的科技创新
互联网科技排名
互联网女皇 腾讯科技
深圳互联网科技怎么样
栖莱科技互联网股份有限公司
互联网科技手抄报图片
互联网对科技影响