牛骨文教育服务平台(让学习变的简单)
博文笔记

Laravel 实现简单Rbac 权限管理

创建时间:2017-11-23 投稿人: 浏览次数:943
  • 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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。