求PHP网站后台管理 管理员 权限控制 系统方案 建立一个模块表,模快表里面有个admin_group_id,记录那些是管理员可以看到的,那些是用户的..那一目了然比如用户模快 1,3 --1表示最高管理员,3表示用户上传模块 1,2 --1表示最高管理员,2表示一般管理员 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建立一个模块表,模快表里面有个admin_group_id,记录那些是管理员可以看到的,那些是用户的..那一目了然比如用户模快 1,3 --1表示最高管理员,3表示用户上传模块 1,2 --1表示最高管理员,2表示一般管理员 到CSDN两年了,为什么我还是两个三角??? 使用组很方便组表:组id/组名1/组12/组2…………权限表:权限id/权限名1/权限12/权限23/权限3…………组 权限关联表:组id/权限id1/11/22/22/4…………随意搭配,组1可能就是你的超管,组2是普管,你新建个组3,搭配一下,就是普通用户。新建组4,可能就是受限用户 看看dedecms的权限管理吧 我就是模仿的那种 我觉得非常灵活 我前两天也在弄这个权限问题,自己设计了几个表在zend auth下面使用的,搂主可以参考一下/*角色表-- id-- 用户名-- 密码-- 工作组 A,B,C...*/DROP TABLE IF EXISTS role_acl;CREATE TABLE role_acl (id int(11) NOT NULL auto_increment,username varchar(30) NOT NULL,password varchar(20) NOT NULL,work_group char(1) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;/*工作组-- id-- 工作组 A,B,C...-- 文字描述*/DROP TABLE IF EXISTS group_acl;CREATE TABLE group_acl (id int(11) NOT NULL auto_increment,work_group char(1) NOT NULL,group_desc varchar(60) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;/* 角色 资源 动作 映射表-- id-- 工作组 A,B,C...-- 资源代码*/DROP TABLE IF EXISTS mapped_acl;CREATE TABLE mapped_acl (id int(11) NOT NULL auto_increment,work_group varchar(1) NOT NULL,resource varchar(20) NOT NULL,action varchar(20) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;/*资源表-- id-- 资源代码-- 资源描述*/DROP TABLE IF EXISTS resource_acl;CREATE TABLE resource_acl (id int(11) NOT NULL auto_increment,resource varchar(20) NOT NULL,resource_desc varchar(60) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;/*动作表-- id-- action code-- action 描述*/DROP TABLE IF EXISTS action_acl;CREATE TABLE action_acl (id int(11) NOT NULL auto_increment,action varchar(20) NOT NULL,action_desc varchar(60) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;数据库设计完毕,在里面添加一些测试数据INSERT INTO `role_acl` (`id`,`username`,`password`,`work_group`)VALUES (1,'admin','123456','A');INSERT INTO `role_acl` (`id`,`username`,`password`,`work_group`) VALUES (2,'hh','123','B');INSERT INTO `role_acl` (`id`,`username`,`password`,`work_group`) VALUES (3,'rl','1','C');INSERT INTO `role_acl` (`id`,`username`,`password`,`work_group`) VALUES (4,'yh','s','D');INSERT INTO `group_acl` (`id`,`work_group`,`group_desc`) VALUES (1,'A','管理员');INSERT INTO `group_acl` (`id`,`work_group`,`group_desc`) VALUES (2,'B','系统用户');INSERT INTO `group_acl` (`id`,`work_group`,`group_desc`) VALUES (3,'C','注册用户');INSERT INTO `group_acl` (`id`,`work_group`,`group_desc`) VALUES (4,'D','游客');INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)VALUES (1,'A','1000','view');INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`) VALUES (2,'A','1000','edit');INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)VALUES (3,'A','1000','delete');INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)VALUES (5,'A','1001','view');INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)VALUES (6,'A','1002','view');INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)VALUES (9,'A','1001','delete');INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)VALUES (10,'A','1001','edit');INSERT INTO `resource_acl` (`id`,`resource`,`resource_desc`) VALUES (1,'1000','用户管理');INSERT INTO `resource_acl` (`id`,`resource`,`resource_desc`) VALUES (2,'1001','新闻管理');INSERT INTO `resource_acl` (`id`,`resource`,`resource_desc`) VALUES (3,'1002','修改密码');INSERT INTO `action_acl` (`id`,`action`,`action_desc`) VALUES (1,'view','查看');INSERT INTO `action_acl` (`id`,`action`,`action_desc`) VALUES (2,'edit','编辑');INSERT INTO `action_acl` (`id`,`action`,`action_desc`) VALUES (3,'delete','删除');上面的测试数据也可以看到 假设role_acl 表里面有一个 admin 角色admin 属于a 工作组, a 工作组可以访问的资源有1000 用户管理 1001 新闻管理 1002 修改密码,1000 里面admin 又有 view eidt delete 权限 1001 也有 view eidt delete 权限 1002 只有view 权限 说错了哦。是zend acl 不过表是没问题的 管理员设定管理用户组,普通管理员必须有所属组,然后设定组权限。主要有以下几个表组表管理员表菜单表(包括主菜单和子菜单)权限表(注:需要设定一个权限表,包括用户ID,和菜单ID) 管理员设定管理用户组,普通管理员必须有所属组,然后设定组权限。主要有以下几个表组表管理员表菜单表(包括主菜单和子菜单)权限表(注:需要设定一个权限表,包括用户ID,和菜单ID) 我到网上搜了下,发现RBAC(role-based Access Control) 基于角色的访问控制有研究过RBAC的嘛? 大哥们快来,如何用PHP实现js中的escape结果,谢谢谢。。。 敢问高人啊。。phpcas的问题 php有中国官方网站吗? 问个简单的ajax问题,我都急死了~ 乱码 这样的效果能做出来么? 在Session里面如何注册一个二维数组 login.html.php这种是什么文件? 关于PHP环境问题 用$_GET获取Location传递的的数据是1,怎么办哪儿不对? mysql某列的默认值为另一列,有办法么> PHP正则表达式后面接的/isU, /is, /s 啊这些是什么意思?
用户模快 1,3 --1表示最高管理员,3表示用户
上传模块 1,2 --1表示最高管理员,2表示一般管理员
组id/组名
1/组1
2/组2
…………权限表:
权限id/权限名
1/权限1
2/权限2
3/权限3
…………组 权限关联表:
组id/权限id
1/1
1/2
2/2
2/4
…………随意搭配,组1可能就是你的超管,组2是普管,你新建个组3,搭配一下,就是普通用户。新建组4,可能就是受限用户
-- id
-- 用户名
-- 密码
-- 工作组 A,B,C...
*/
DROP TABLE IF EXISTS role_acl;
CREATE TABLE role_acl (
id int(11) NOT NULL auto_increment,
username varchar(30) NOT NULL,
password varchar(20) NOT NULL,
work_group char(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
/*工作组
-- id
-- 工作组 A,B,C...
-- 文字描述
*/
DROP TABLE IF EXISTS group_acl;
CREATE TABLE group_acl (
id int(11) NOT NULL auto_increment,
work_group char(1) NOT NULL,
group_desc varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
/* 角色 资源 动作 映射表
-- id
-- 工作组 A,B,C...
-- 资源代码
*/
DROP TABLE IF EXISTS mapped_acl;
CREATE TABLE mapped_acl (
id int(11) NOT NULL auto_increment,
work_group varchar(1) NOT NULL,
resource varchar(20) NOT NULL,
action varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
/*资源表
-- id
-- 资源代码
-- 资源描述
*/
DROP TABLE IF EXISTS resource_acl;
CREATE TABLE resource_acl (
id int(11) NOT NULL auto_increment,
resource varchar(20) NOT NULL,
resource_desc varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
/*动作表
-- id
-- action code
-- action 描述
*/
DROP TABLE IF EXISTS action_acl;
CREATE TABLE action_acl (
id int(11) NOT NULL auto_increment,
action varchar(20) NOT NULL,
action_desc varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
数据库设计完毕,
在里面添加一些测试数据
INSERT INTO `role_acl` (`id`,`username`,`password`,`work_group`)
VALUES (1,'admin','123456','A');
INSERT INTO `role_acl` (`id`,`username`,`password`,`work_group`) VALUES (2,'hh','123','B');
INSERT INTO `role_acl` (`id`,`username`,`password`,`work_group`) VALUES (3,'rl','1','C');
INSERT INTO `role_acl` (`id`,`username`,`password`,`work_group`) VALUES (4,'yh','s','D');
INSERT INTO `group_acl` (`id`,`work_group`,`group_desc`) VALUES (1,'A','管理员');
INSERT INTO `group_acl` (`id`,`work_group`,`group_desc`) VALUES (2,'B','系统用户');
INSERT INTO `group_acl` (`id`,`work_group`,`group_desc`) VALUES (3,'C','注册用户');
INSERT INTO `group_acl` (`id`,`work_group`,`group_desc`) VALUES (4,'D','游客');
INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)
VALUES (1,'A','1000','view');
INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`) VALUES (2,'A','1000','edit');
INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)
VALUES (3,'A','1000','delete');
INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)
VALUES (5,'A','1001','view');
INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)
VALUES (6,'A','1002','view');
INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)
VALUES (9,'A','1001','delete');
INSERT INTO `mapped_acl` (`id`,`work_group`,`resource`,`action`)
VALUES (10,'A','1001','edit');
INSERT INTO `resource_acl` (`id`,`resource`,`resource_desc`) VALUES (1,'1000','用户管理');
INSERT INTO `resource_acl` (`id`,`resource`,`resource_desc`) VALUES (2,'1001','新闻管理');
INSERT INTO `resource_acl` (`id`,`resource`,`resource_desc`) VALUES (3,'1002','修改密码');
INSERT INTO `action_acl` (`id`,`action`,`action_desc`) VALUES (1,'view','查看');
INSERT INTO `action_acl` (`id`,`action`,`action_desc`) VALUES (2,'edit','编辑');
INSERT INTO `action_acl` (`id`,`action`,`action_desc`) VALUES (3,'delete','删除');
上面的测试数据也可以看到 假设role_acl 表里面有一个 admin 角色
admin 属于a 工作组, a 工作组可以访问的资源有1000 用户管理 1001 新闻管理 1002 修改
密码,1000 里面admin 又有 view eidt delete 权限 1001 也有 view eidt delete 权限 1002 只
有view 权限
主要有以下几个表
组表
管理员表
菜单表(包括主菜单和子菜单)
权限表
(注:需要设定一个权限表,包括用户ID,和菜单ID)
主要有以下几个表
组表
管理员表
菜单表(包括主菜单和子菜单)
权限表
(注:需要设定一个权限表,包括用户ID,和菜单ID)
有研究过RBAC的嘛?