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

权限管理  

  三张主表{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、修改管理员时,密码留空则不修改密码【即修改用户名功能】

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

修改前判断是否修改密码

 

 

原文地址:https://www.cnblogs.com/zixuanfy/p/7122544.html