Laravel 实现简单Rbac 权限管理
- 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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Java获取二维数组行列长度
- 下一篇: 5.2 Javascript:循环-二维数组