论坛首页 Java企业应用论坛

一个可能的列级权限控制方案讨论

浏览 22919 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-07-16  
独狼 写道
引用
如果配置什么的看编程技巧了,我是把这些业务表的列都生成xml,角色和表列的关系也在xml中,启动web服务器时把没个角色 规则实例化成 一个java对象,如果修改角色,只要修改内存中java对象和xml就可以了。
经过实践,比放数据库中简单。

这种方式对维护者就是恶梦啊。。。

我不认为复杂。和你建立权限表一样!可能更简单。

这里我把这个xml当成数据库。你把这个xml转化成表单是如此的容易。
我用xstreame上瘾了。先定义java对象,然后确定xml.

private class RoleMapping{
    private  String role;
    private  String tableName;
    String[] fieldName;
     Boolean[] isReaders;
    Boolean[] isWriters;
    ............................

}
其实控制权限的就这一堆对象,初始化这个对象的是 需要 控制权限的表极其字段。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

不知道大家用过lotus domain开发过OA没有,它的字段控制和楼主的需求类似。
0 请登录后投票
   发表时间:2006-07-18  
引用

我还真没听说过Oracle可以做到一个表中某几行可以由某人修改,另外几行又只能只读什么的,能说清楚点么?
基于行的安全控制,Oracle 早就做到了。http://www.oracle.com/technology/oramag/oracle/03-jul/o43security.html
引用
ACL一般应用于用户数少(相对于权限)的场景,性能好是它的特点
RBAC一般应用于用户多,权限也多的场景,灵活是其主要解决的问题
说大了,世界上权限控制方式只有两种,一种是控制单体数据(怎么叫都好,什么行数据,实例数据都可以),另外一种是控制数据集合的权限.ACL,RBAC和这种划分是没有冲突的.所谓的列数据控制,其实是控制数据集合权限的变形罢了. 在这上面糊涂的人,其实是没有搞清楚自己到底要控制什么罢了.在说明白点,就是上面说的控制数据attr,其实应该控制的是operation(business logic)
说实话,我的确不理解ACL从实现上对基于列的控制有什么作用,如果只是讨论所谓的概念,我也写得很清楚了http://forum.iteye.com/viewtopic.php?t=20586&postdays=0&postorder=asc&start=15。 就是基于ACL也好,基于RBAC也好,说到底只是权限控制的行为方式,而并非怎么去寻找一个更好的思路去实现基于行控制的行为。 如果要把基于属性的控制泛化为operation,基本就没得谈了。
引用
现在一般的Web应用,由于使用Connection Pool,一般数据库用户都使用的同一个。所以依赖数据库的访问控制机制是不行的。

普遍的,全面的属性级访问控制是否有必要?象ACEGI的话也只是支持对象级的访问控制。
那确实,在绝大多数情况,甚至列对象级的控制都是不需要的。不过既然谈到了这个问题,也就是存在了需求。
0 请登录后投票
   发表时间:2006-07-19  
ACL也好,RBCL也好,准确地说都属于访问控制的策略,而不是具体的实现方式。
0 请登录后投票
   发表时间:2006-08-04  
如果建权限表,个人感觉后台实现比较好,通过session bean 和自定义标签,一条sql即可完成,权限表实际起到字典的作用,不过最好给业务管理员留下管理功能,可以灵活的控制各个权限级别访问类型的变更和角色的增加。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics