首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

如果用ssh做一个oa系统,怎么实现权限管理呢?

2012-01-13 
如果用ssh做一个oa系统,如何实现权限管理呢??如题:如果我要用ssh做一个oa系统,怎样实现复杂的权限管理呢?

如果用ssh做一个oa系统,如何实现权限管理呢??
如题:
   
  如果我要用ssh做一个oa系统,怎样实现复杂的权限管理呢?
   
注意:
  不是单独基于角色,除了基于角色,还基于权限;
  基于角色:如:管理员,经理,主管,普通员工等每个不同的角色拥有不同的权限;
  基于权限:如:增、删、改、查,权限交叉管理
  假设:有经理1,经理2;经理1可能只有查看、增加员工的权限,经理2有查看、增加、修改的权限;这些权限是管理员在添加角色是,赋予的角色一般权限外的权限,这些权限可以随时修改
  
  这种该怎么做呢,现在没有头绪??
  最好是哪位高手贴段代码,解释一下!!!

[解决办法]
写了个简单的权限控制,使用二进制的与和或来实现,每个权限值必须是2的整数次幂

Java code
package util;public class PermissionController {    public static final int INSERT = 2;    public static final int UPDATE = 4;    public static final int DELETE = 8;    private int permission = 0;    public boolean canInsert() {        return hasPermission(INSERT);    }    public boolean canUpdate() {        return hasPermission(UPDATE);    }    public boolean canDelete() {        return hasPermission(DELETE);    }    public void addInsertPermission() {        addPermission(INSERT);    }    public void addUpdatePermission() {        addPermission(UPDATE);    }    public void addDeletePermission() {        addPermission(DELETE);    }    public void removeInsertPermission() {        removePermission(INSERT);    }    public void removeUpdatePermission() {        removePermission(UPDATE);    }    public void removeDeletePermission() {        removePermission(DELETE);    }        public int getPermissionValue() {        return permission;    }    private void addPermission(int p) {        permission |= p;    }    private void removePermission(int p) {        permission = permission & (~p);    }        private boolean hasPermission(int p) {        return (permission & p) == p ? true : false;    }    public static void main(String[] args) {        PermissionController p = new PermissionController();                System.out.println("添加权限......");        // 添加权限        p.addInsertPermission();        System.out.printf("Can insert: %s\n", p.canInsert());                // 删除权限        p.addDeletePermission();        System.out.printf("Can delete: %s\n", p.canDelete());                System.out.printf("Can update: %s\n", p.canUpdate());        System.out.println(Integer.toBinaryString(p.getPermissionValue()));                System.out.println("删除权限......");        // 去掉删除权限        p.removeDeletePermission();        System.out.printf("Can delete: %s\n", p.canDelete());                System.out.println(Integer.toBinaryString(p.getPermissionValue()));    }}
[解决办法]
使用enum的特性,能使得代码更加的简练
Java code
package util;public class PermissionController {    private int permission = 0;    static public enum Permission {        INSERT(1), UPDATE(2), DELETE(4); // 每个权限的值是2的n次幂        private final int value;        private Permission(int value) {            this.value = value;        }        public int getValue() {            return value;        }    }    public void addPermission(Permission p) {        for (Permission t : Permission.values()) {            if (t == p) {                permission |= p.getValue();            }        }    }    public void removePermission(Permission p) {        for (Permission t : Permission.values()) {            if (t == p) {                permission = permission & (~p.getValue());            }        }    }    public boolean hasPermission(Permission p) {        return (permission & p.getValue()) == p.getValue() ? true : false;    }    public int getPermissionValue() {        return permission;    }    public static void main(String[] args) {        PermissionController p = new PermissionController();        // 增加添加权限        System.out.println("增加添加权限");        p.addPermission(Permission.INSERT);        System.out.printf("Can insert: %s\n", p.hasPermission(Permission.INSERT));        // 增加删除权限        System.out.println("增加删除权限");        p.addPermission(Permission.DELETE);        System.out.printf("Can delete: %s\n", p.hasPermission(Permission.DELETE));        System.out.printf("Can update: %s\n", p.hasPermission(Permission.UPDATE));        System.out.println(Integer.toBinaryString(p.getPermissionValue()));        System.out.println("去掉删除权限......");        // 去掉删除权限        p.removePermission(Permission.DELETE);        System.out.printf("Can delete: %s\n", p.hasPermission(Permission.DELETE));        System.out.printf("Can insert: %s\n", p.hasPermission(Permission.INSERT));        System.out.println(Integer.toBinaryString(p.getPermissionValue()));    }} 

热点排行