Laravel 实现简单Rbac 权限管理

来源:互联网 发布:阿里云 连接 腾讯云 编辑:程序博客网 时间:2024/06/05 18:59
  • RBAC 基于角色的访问控制(Role-Based Access Control)
  • ( 用户 —–>角色——>权限 )
  • 简单实现了一个访问控制的权限,数据库表如下
CREATE TABLE `users` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,   `name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名',  `email` varchar(30) NOT NULL DEFAULT '' COMMENT '邮箱',  `is_admin` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否是超级管理员 1表示是 0 表示不是',  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效',  `updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',  `created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',  PRIMARY KEY (`id`),  KEY `idx_email` (`email`)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='用户表';CREATE TABLE `roles` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '角色名称',  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效',  `updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',  `created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色表';CREATE TABLE `user_roles` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户id',  `role_id` int(11) NOT NULL DEFAULT '0' COMMENT '角色ID',  `created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',  PRIMARY KEY (`id`),  KEY `idx_user_id` (`user_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户角色表';CREATE TABLE `permissions` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `title` varchar(50) NOT NULL DEFAULT '' COMMENT '权限名称',  `urls` varchar(1000) NOT NULL DEFAULT '' COMMENT 'json 数组',  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效',  `updated_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '最后一次更新时间',  `created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权限详情表';CREATE TABLE `role_permissions` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  `role_id` int(11) NOT NULL DEFAULT '0' COMMENT '角色id',  `permission_id` int(11) NOT NULL DEFAULT '0' COMMENT '权限id',  `created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间',  PRIMARY KEY (`id`),  KEY `idx_role_id` (`role_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色权限表';
  • 最终效果
    这里写图片描述

  • 不过laravel集成有 权限包,可以试试 Entrust ,文档地址

http://laravelacademy.org/post/3755.html