权限管理怎么做;
如果我现在有一个论坛,角色有管理员,版主和用户管理员可以管理所有人,对任何板块的人的增删改查;
版主只能对自己板块的人进行增删改查;
我用的是acl做的,CRUD(C=1,R=2,U=4,D=8)判断,但是crud只能判断增删改查,版主的增加和管理员的增加是不同的,应该怎么做呢?比如我Module(板块)有
get();
delete();
update();
add();但是每个角色的删除可能都不一样请问各位大虾的权限验证都是怎么做的
雪地中跪求!!!
如果太多的话可以发到

解决方案 »

  1.   

    其实我感觉这个问题在作项目的过程中应该经常会遇到,请csdn的各路大虾们帮帮忙
      

  2.   

    首先你 建立组权限,比如 1.只能查 2.能查能改。3.能查能改能删
    然后你在权限表中新建的标识role_id, 超级=0,管理=1,普通=2 在界面中创建用户的时候 超级。管理。普通 必须 而且只能选一个,然后在分配组权限。
    不知能否对你有帮助
      

  3.   

    当然你在sysuser这张表中必须和权限表有关联
      

  4.   

    当我的犬在再有变化的时候怎么办,现在变成  超级 大管理 小管理  VIP 普通别告诉我还得修改源码......
    我现在想的是我新建一个类Group
    现在的类Person  //人
    User    //用户(人的信息)
    Role     //角色
    UserRole //用户和角色的对应类,因为角色在用户中有排列顺序
    Acl    //权限(用户id,CRUD,模块标识)
    Module //模块Group //代表某个User属于那个组的
      

  5.   

    当然 你这张表肯定没有问题 建议:在建立三个备用字段memo1,memo2,memo3-------------------------------------------------------------
    当我的犬在再有变化的时候怎么办,现在变成 超级 大管理 小管理 VIP 普通别告诉我还得修改源码......-------------------------------------------------------------
    回复:当然,无论是论坛 是普通的网站 类似 cms都要有个栏目 对权限进行管理
    例如 我们增加一个栏目 就叫用户权限管理,里面列出用户的属性,权限啊,通过dao也可以对这个栏目进行增删改查
      

  6.   

    acl.... 我只用过SQL,刚开始学ORACLE
      

  7.   

    CRUD 通常只用作针对某个数据的增删改查权限的设置。
    一般对于多权限,并且有可能后期添加新权限的应用场景,不采取CRUD方式。
    很可能使程序和表结构不便于理解。当然,楼主已经采用了CRUD的设置方式,那么,可以参考一种变通的方法。
    (不推荐使用,不便于理解)
    通常需要,用户表、角色表、操作对象表、权限配置表
    用户表和角色表同11楼,从略。
    操作对象表:存放CRUD的操作对象,比如 任何的板块,版主自己的板块,自己发的帖子等等。
    权限配置表:角色、权限与操作对象的关联关系,比如 管理员可以增删改查任何的板块等等。
      同一个角色可以对应多个操作对象
      

  8.   

    对于权限的管理有开源的框架 Shiro 
    http://www.ibm.com/developerworks/cn/opensource/os-cn-shiro/index.html
      

  9.   

    写代码的话,有点多了,怎么也得2000行以上吧 ?
    我简单写点,抛砖引玉吧。当然,就不去IDE调试什么的了。有错的话,担待点吧。
    一个类对应一张表,总会简单些吧?class UserGroup{//用户组(或者称为用户角色)
      private long groupId;
      private String gourpName;
      //... Other properties , getters and setters
    }
    class User{//用户表
      private long userId;
      private String loginName;
      private String loginPassword;
      private UserGroup group;//所属的用户组(或者称为角色)
      //... Other properties , getters and setters
    }
    class OperationObject{//操作对象表
      private long ooId;
      private String ooName;//操作对象的名称
      private String re;//备注,描述
      //... Other properties , getters and setters
    }
    class CRUDConfig{//权限配置表
      private UserGroup group;
      private OperationObject optObject;
      //推荐 选用goupId和ooId作为联合主键
      private int CRUD;
    }
    /* 查询某用户组对应某操作对象的权限的HQL基本如下:*/
     from CRUDConfig c where c.group=? and c.optObject=?
      

  10.   

    这是一个权限管理问题,只要是完整一点的Web应用都会用到。
    这个问题用简单的几句话比较难以说明白。
    主要的思路是需要有用户表、角色表、用户角色表、权限表、角色权限表这么5个表。
    权限表可以表示为操作码,对应于不同类的方法。
    为了便于权限控制,需要有用户配置、角色配置、权限配置页面,通过用户角色表关联权限。
    可能没有说清楚,需要的话可邮件或其他方式联系。
      

  11.   

    一般需要以下几个表,
    人员表:人的基本信息
    权限表:具体权限信息,与权限组N:1关系
    权限组表:权限组,与权限1:N
    人员权限组映射表:每个人属于的具体权限组可以参照windows 的用户管理,很规范
      

  12.   

    我说说, 不知道管不管用:
    base:
    权限+角色基本字段子类:
    权限+角色具体字段(管理员,版主和用户具体字段)增删改的时候, 判定对应子类的权限。int delete(权限,sql)
    int update(权限,sql)
    int add(权限,sql)
    这里有2种方法, 用抽象工厂, 多个实现类对应多个具体的增删改;
    在一个实现中, 多重判定。
      

  13.   

    你这样设置操作对象会不把操作对象设置的过多,如果我要在设置的时候是不是都的设置呢,
    现在我的网站如果新加了一个板块,我是最大管理员,因为我没有把这个权限加入到OperationObject中我就没有了对此板块的操作权限了呢?
      

  14.   

    Discuz! 权限管理 是如何实现的,是有事例或谁能给个链接........我想像Discuz!的就应该可以了吧...
      

  15.   

    那比如现在我管理用户,管理员能管理所有用户,而版主只能管理(本版块中的)普通用户,而用户不属于OperationObject只是User,指么能做到我在版主察看的时候我是察看和管理我本版块内的User,而管理员是在管理所有,或者部分所有(就是不能管理他本身,和不能管理他比他权限大的角色)
      

  16.   

    如果我现在有一个Group我可以把我的角色赋予给我的组么