• 技术文章 >后端开发 >php教程

    求PHP网站靠山管理 管理员 权限控制 系统方案

    2016-06-13 13:24:59原创407

    求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
    ------解决方案--------------------
    探讨
    每个权限都需要加一个标记。

    如:

    发布贴子 1

    添加管理员 2

    图片上传 3

    ...........

    如用户具备已上三个权限

    存记数据库,是数组,(1;2;3)

    用户只具备发布贴子权限 (2;)

    具备发布贴子和图片上传权限 (2;3;)

    ...........

    判断是否助有权限时,查找是否包含就行。。

    不知我是明白??

    ------解决方案--------------------
    上面的多是简单权限
    复杂的看权限角色模型,网上搜一下
    ------解决方案--------------------
    使用组很方便

    组表:
    组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,可能就是受限用户
    ------解决方案--------------------
    看看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;

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:NULL group NOT varchar id
    上一篇: php exception错误处理 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 一文解析PHP元转分的错误示范(附代码实例)• PHP+Socket系列之实现websocket聊天室• PHP+Socket系列之IO多路复用及实现web服务器• PHP+Socket系列之实现客户端与服务端数据传输• 一文详解PHP用流方式实现下载文件(附代码示例)
    1/1

    PHP中文网