权限管理  

  三张主表{p39_privilege(权限)、p39_role(角色)、p39_admin(管理)}

  两张中间表{p39_role_pri(角色-权限)、p39_admin_role(管理-角色)}

注:权限表与角色表为多对多关系,管理与角色表为多对多关系

1、建表语句  

/********* 权限表 *********/
drop if exists p39_privilege;
create table p39_privilege
(
id mediumint unsigned not null auto_increment comment 'Id',
pri_name varchar(30) not null comment '权限名称',
module_name varchar(30) not null default '' comment '模块名称',
controller_name varchar(30) not null default '' comment '控制器名称',
action_name varchar(30) not null default '' comment '方法名称',
parent_id mediumint unsigned not null default '0' comment '上级权限Id',
primary key (id)
)engine=InnoDB default charset=utf8 comment '权限';
/********* 角色-权限表 *********/
drop if exists p39_role_pri;
create table p39_role_pri
(
pri_id mediumint unsigned not null comment '权限Id',
role_id mediumint unsigned not null comment '角色Id',
key pri_id (pri_id),
key role_id(role_id)
)engine=InnoDB default charset=utf8 comment '角色权限';
/********* 角色表 *********/
drop if exists p39_role;
create table p39_role
(
id mediumint unsigned not null auto_increment comment 'Id',
role_name varchar(30) not null comment '角色名称',
primary key (id)
)engine=InnoDB default charset=utf8 comment '角色';
/********* 管理-角色表 *********/
drop if exists p39_admin_role;
create table p39_admin_role
(
admin_id mediumint unsigned not null comment '管理Id',
role_id mediumint unsigned not null comment '角色Id',
key admin_id (admin_id),
key role_id(role_id)
)engine=InnoDB default charset=utf8 comment '管理角色';
/********* 管理表 *********/
drop if exists p39_admin;
create table p39_admin
(
id mediumint unsigned not null auto_increment comment 'Id',
username varchar(30) not null comment '用户名',
password char(32) not null comment '密码',
primary key (id)
)engine=InnoDB default charset=utf8 comment '管理员';
INSERT INTO p39_admin(id,username,password) VALUES(1, 'root', '21232f297a57a5a743894a0e4a801fc3');

  注:管理员表中插入一个超级管理员账号,没有角色,拥有所有权限

2、使用GII代码生成器生成三个主表的代码

  p39_privilege修改配置,去掉搜索功能代码

    

 

  p39_role配置,不要搜索

   p39_admin配置, 只留用户名搜索

 

3、添加管理员是,密码加密

4、超级管理员不能删除,且页面不显示删除按钮

5、修改管理员时,密码留空则不修改密码【即修改用户名功能】

    修改表单验证规则,修改时可以为空,添加时不能为空,直接删除密码长度验证

修改前判断是否修改密码

PHP.45-TP框架商城应用实例-后台20-权限管理-RBAC表构造与代码生成的更多相关文章

  1. PHP.44-TP框架商城应用实例-后台19-权限管理-RBAC需求分析

    RBAC:Role Based Access Control:基于角色的访问控制 需求分析:[类似效果如下图] 1.权限,角色,管理员 2.权限管理[无限级] 注意:权限会被分配给角色,而不是给管理员 ...

  2. PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证

    权限验证 1.登录控制器 2.通过tp验证码类生成验证码图片 3.在管理员模型增加登录验证规则 4.后台中所有的控制器必须先登录才能访问 思路:在访问任何一个控制器之前都判断一个session即可,= ...

  3. PHP.38-TP框架商城应用实例-后台14-商品管理-商品扩展分类的删除、修改

    商品分类删除 1.删除商品时,根据商品id删除扩展分类表数据 商品扩展分类修改 1.在控制器GoodsController.class.php/edit()中根据商品id取出对应的所有扩展分类 2.在 ...

  4. PHP.47-TP框架商城应用实例-后台22-权限管理-角色和管理员的关系

    角色和管理员的关系 角色功能 管理员功能 角色与管理的关联要通过管理-角色表进行{多对多} /********* 管理-角色表 *********/ drop if exists p39_admin_ ...

  5. PHP.46-TP框架商城应用实例-后台21-权限管理-权限和角色的关系

    权限和角色的关系 权限功能 角色功能 权限与角色的关联要通过权限-角色表进行{多对多} /********* 角色-权限表 *********/ drop if exists p39_role_pri ...

  6. PHP.37-TP框架商城应用实例-后台13-商品管理-扩展分类的添加、显示【数据分组】、搜索分类【多对多】

    商品扩展分类 需求:一件商品能有多个扩展分类,搜索任何一个分类都能搜出该商品 建表[扩展分类表] drop table if exists p39_goods_cat; create table p3 ...

  7. PHP.36-TP框架商城应用实例-后台12-商品管理-主分类添加、修改、搜索(连表查询)

    需求:一个商品必须有一个主分类,一个主分类可以有多个商品 [一对多] 修改表p39_goods,增加外键约束,增加索引 主分类添加[控制器->页面] 1.在控制器GoodsController. ...

  8. PHP.27-TP框架商城应用实例-后台4-使用Gii生成品牌表的代码

    Gii安装[GII适用于商城项目] 将Gii文件夹复到application 是,访问http://xx.com/index.php/gii Gii规则[Gii使用规则与建表规则密切相关] 1.建表字 ...

  9. PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图

    添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace ...

随机推荐

  1. 恢复scout工具栏

    删除scout安装路径 C:\PROGRAM FILES\SIEMENS\STEP7\U7UMC\DATA\WRKBNCH 下的三个文件: acppersi.dat uespersi.dat uesu ...

  2. HDU-3092 Least common multiple---数论+分组背包

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3092 题目大意: 有一个数字n,现在要把它分解成几个数字相加!然后这几个数字有最小公倍数,题目目的是 ...

  3. 动态规划(DP),0-1背包问题

    题目链接:http://poj.org/problem?id=3624 1.p[i][j]表示,背包容量为j,从i,i+1,i+2,...,n的最优解. 2.递推公式 p[i][j]=max(p[i+ ...

  4. POJ 2771 Guardian of Decency 【最大独立集】

    传送门:http://poj.org/problem?id=2771 Guardian of Decency Time Limit: 3000MS   Memory Limit: 65536K Tot ...

  5. Graphics Card Notes | 烧卡日记(显卡常识笔记)

    [ a comparison of several popular Graphics cards ]

  6. VirtualBox改变虚拟硬盘位置

    原本放虚拟硬盘的位置容量不足,因此将原来的虚拟硬盘放到了一个相对空闲的分区.设置虚拟硬盘位置时出现一点小问题,解决过程记录如下. 1. 将虚拟硬盘复制到目标位置后,假设为“F:\Ubuntu 16.0 ...

  7. 【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)

    洛谷P1072:https://www.luogu.org/problemnew/show/P1072 思路 gcd(x,a0)=a1 lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) ( ...

  8. POJ 3666 Making the Grade(数列变成非降序/非升序数组的最小代价,dp)

    传送门: http://poj.org/problem?id=3666 Making the Grade Time Limit: 1000MS   Memory Limit: 65536K Total ...

  9. WebStorm中Node.js项目配置教程——项目设置

    上一章讲解了Node.js项目在WebStorm中的两种创建方式,当完成Node.js项目创建以后,剩下的就是涉及配置设置工作. 为了确保Node.js全局和Node.js核心模块的代码完成功能,打开 ...

  10. 全局变量&局部变量&Static存储&Register变量

    1.局部变量 局部变量也称为内部变量.局部变量是在函数内作定义说明的.其作用域仅限于函数内:函数的形参就是局部变量: 2.全局变量 全局变量也称为外部变量,它是在函数外部定义的变量.全局变量的说明符为 ...