创建时间:2017-04-05
本案例采用四张表
1、tb_admin 用户表

2、tb_rbac_role 角色表

3、tb_rbac_node 节点表

4、tb_role_node 角色 节点关联表

创建四张表的sql语句
-- phpMyAdmin SQL Dump
-- version 4.6.4
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: 2017-04-05 02:04:30
-- 服务器版本: 5.7.14
-- PHP Version: 5.6.25
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `h15016287206`
--
-- --------------------------------------------------------
--
-- 表的结构 `tb_admin`
--
CREATE TABLE `tb_admin` (
`id` int(11) NOT NULL COMMENT '自增ID',
`uniquen_id` varchar(32) NOT NULL COMMENT '用户唯一性ID',
`name` char(10) NOT NULL DEFAULT '' COMMENT '昵称',
`user` varchar(50) NOT NULL COMMENT '账号',
`pw` char(32) NOT NULL DEFAULT '' COMMENT '密码',
`ip` char(15) NOT NULL DEFAULT '' COMMENT 'ip地址',
`ip_addr` varchar(255) NOT NULL COMMENT 'IP地理位置',
`create_time` datetime NOT NULL DEFAULT '2017-02-24 14:33:19' COMMENT '添加时间',
`up_time` timestamp NOT NULL DEFAULT '2017-02-24 06:34:37' ON UPDATE CURRENT_TIMESTAMP COMMENT '最后登录一次时间',
`disable` enum('2','1') NOT NULL DEFAULT '1' COMMENT '禁用管理员',
`role_id` tinyint(4) NOT NULL DEFAULT '3' COMMENT '角色组ID',
`beizhu` text COMMENT '备注'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- 表的结构 `tb_rbac_node`
--
CREATE TABLE `tb_rbac_node` (
`id` tinyint(4) NOT NULL COMMENT '自增ID',
`name_en` varchar(255) NOT NULL COMMENT '应用名称',
`name_cn` varchar(255) NOT NULL COMMENT '应用中文名称',
`type` enum('2','1','0') NOT NULL DEFAULT '0' COMMENT '类型,区分是模块 还是应用 还是方法',
`pid` tinyint(4) NOT NULL COMMENT '构建无限极分类',
`create_time` datetime NOT NULL DEFAULT '2017-04-02 17:49:03' COMMENT '创建时间',
`up_time` timestamp NOT NULL DEFAULT '2017-04-02 09:49:26' ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- 表的结构 `tb_rbac_role`
--
CREATE TABLE `tb_rbac_role` (
`id` tinyint(4) NOT NULL COMMENT '自增ID',
`role_name` varchar(255) NOT NULL DEFAULT '' COMMENT '角色名称',
`beizhu` varchar(255) NOT NULL COMMENT '备注信息',
`create_time` datetime NOT NULL DEFAULT '2017-04-02 11:12:18' COMMENT '创建时间',
`up_time` timestamp NOT NULL DEFAULT '2017-04-02 03:12:44' ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`disable` enum('0','1') NOT NULL DEFAULT '1' COMMENT '1正常是引用,0 禁用'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- 表的结构 `tb_role_node`
--
CREATE TABLE `tb_role_node` (
`id` int(11) NOT NULL,
`role_id` tinyint(4) NOT NULL COMMENT '角色ID',
`node_id` tinyint(4) NOT NULL COMMENT '节点ID'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tb_admin`
--
ALTER TABLE `tb_admin`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `name` (`name`);
--
-- Indexes for table `tb_rbac_node`
--
ALTER TABLE `tb_rbac_node`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `tb_rbac_role`
--
ALTER TABLE `tb_rbac_role`
ADD PRIMARY KEY (`id`);
--
-- Indexes for table `tb_role_node`
--
ALTER TABLE `tb_role_node`
ADD PRIMARY KEY (`id`);
--
-- 在导出的表使用AUTO_INCREMENT
--
--
-- 使用表AUTO_INCREMENT `tb_admin`
--
ALTER TABLE `tb_admin`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增ID', AUTO_INCREMENT=107;
--
-- 使用表AUTO_INCREMENT `tb_rbac_node`
--
ALTER TABLE `tb_rbac_node`
MODIFY `id` tinyint(4) NOT NULL AUTO_INCREMENT COMMENT '自增ID', AUTO_INCREMENT=38;
--
-- 使用表AUTO_INCREMENT `tb_rbac_role`
--
ALTER TABLE `tb_rbac_role`
MODIFY `id` tinyint(4) NOT NULL AUTO_INCREMENT COMMENT '自增ID', AUTO_INCREMENT=5;
--
-- 使用表AUTO_INCREMENT `tb_role_node`
--
ALTER TABLE `tb_role_node`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=158;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
需要用到的HTML页面
添加角色页面

添加管理员,用户页面

添加节点页面

查看角色页面

查看节点页面

分配权限页面

管理员入库

添加角色入库

添加节点入库

分配权限页面

模板中遍历节点,将该角色已有的节点 打上勾,当点击确认分配权限的时候,获取已勾中的checkbox的value值,然后用、拼接成一个字符串,ajax提交给后台
遍历节点 我认为的权限之中的难点之一 六层foreach嵌套 吐血![]()
上图~





权限分配 方法逻辑


分配权限 数据库操作

检测权限,建立一个common控制器,然后所有需要权限控制的控制来继承这个common控制器
