锁定老帖子 主题:一个可能的列级权限控制方案讨论
精华帖 (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没有,它的字段控制和楼主的需求类似。 |
|
返回顶楼 | |
发表时间:2006-07-18
引用 我还真没听说过Oracle可以做到一个表中某几行可以由某人修改,另外几行又只能只读什么的,能说清楚点么? 引用 ACL一般应用于用户数少(相对于权限)的场景,性能好是它的特点
说实话,我的确不理解ACL从实现上对基于列的控制有什么作用,如果只是讨论所谓的概念,我也写得很清楚了http://forum.iteye.com/viewtopic.php?t=20586&postdays=0&postorder=asc&start=15。 就是基于ACL也好,基于RBAC也好,说到底只是权限控制的行为方式,而并非怎么去寻找一个更好的思路去实现基于行控制的行为。 如果要把基于属性的控制泛化为operation,基本就没得谈了。
RBAC一般应用于用户多,权限也多的场景,灵活是其主要解决的问题 说大了,世界上权限控制方式只有两种,一种是控制单体数据(怎么叫都好,什么行数据,实例数据都可以),另外一种是控制数据集合的权限.ACL,RBAC和这种划分是没有冲突的.所谓的列数据控制,其实是控制数据集合权限的变形罢了. 在这上面糊涂的人,其实是没有搞清楚自己到底要控制什么罢了.在说明白点,就是上面说的控制数据attr,其实应该控制的是operation(business logic) 引用 现在一般的Web应用,由于使用Connection Pool,一般数据库用户都使用的同一个。所以依赖数据库的访问控制机制是不行的。
那确实,在绝大多数情况,甚至列对象级的控制都是不需要的。不过既然谈到了这个问题,也就是存在了需求。
普遍的,全面的属性级访问控制是否有必要?象ACEGI的话也只是支持对象级的访问控制。 |
|
返回顶楼 | |
发表时间:2006-07-19
ACL也好,RBCL也好,准确地说都属于访问控制的策略,而不是具体的实现方式。
|
|
返回顶楼 | |
发表时间:2006-08-04
如果建权限表,个人感觉后台实现比较好,通过session bean 和自定义标签,一条sql即可完成,权限表实际起到字典的作用,不过最好给业务管理员留下管理功能,可以灵活的控制各个权限级别访问类型的变更和角色的增加。
|
|
返回顶楼 | |