求PHP网站后台管理 管理员 权限控制 系统方案
小弟现在做一个网站后台,包括文章上传模块,供下载的文件上传,用户留言模块等。
问题:后台管理员权限分配
说明:现在系统有一个超级管理员,具有所有权限。现在想实现:超级管理员可以添加一般管理员,并且可以控制一般管理员的权限。比如控制某个一般用户只能上传文章,而不能上传图片等等,这该如何实现?求个思路,有源码实例更好啦!
另外,系统可能新增加其他模块(比如新增一个 图片上传模块等等),在新增了后台模块后,如何方便的配置原有管理员账号关于新增模块的相关权限?
可能说的不太清楚,有问题欢迎跟帖!
最高只能给100分,不知能不能加分了!
[解决办法]
每个权限都需要加一个标记。
如:
发布贴子 1
添加管理员 2
图片上传 3
...........
如用户具备已上三个权限
存记数据库,是数组,(1;2;3)
用户只具备发布贴子权限 (2;)
具备发布贴子和图片上传权限 (2;3;)
...........
判断是否助有权限时,查找是否包含就行。。
不知我是明白??
[解决办法]
建立一个模块表。如果对该模块有操作权利,为1.否则.0
1 0 1 1.很灵活的使用
[解决办法]
建立一个模块表,模快表里面有个admin_group_id,记录那些是管理员可以看到的,那些是用户的..那一目了然比如
用户模快 1,3 --1表示最高管理员,3表示用户
上传模块 1,2 --1表示最高管理员,2表示一般管理员
[解决办法]
建立一个模块表,模快表里面有个admin_group_id,记录那些是管理员可以看到的,那些是用户的..那一目了然比如
用户模快 1,3 --1表示最高管理员,3表示用户
上传模块 1,2 --1表示最高管理员,2表示一般管理员
[解决办法]
phpgacl
[解决办法]
/*资源表
-- 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)