虽然OpenJWeb中集成了Spring Security,不过数据权限并没有按照Spring Security中的 ACL框架,而是采用了一种更容易理解的方式,同样也能够实查询,编辑,删除操作的数据权限控制. 不需要为每一数据记录设置访问用户,只需要定义一个通用的规则,这样减少了很大数量的ACL记录.
表结构: 表名(需要对此表设置数据权限),操作(查询,删除,修改),条件规则(用户条件sql),数据过滤规则sql(当条件规则符合时,所选用的数据过滤语句,此where语句会附加在主sql的where 子句中,在执行分页之前起作用)
条件规则可以使用java程序实现,因为有的复杂的条件可能无法用一个sql写出来,在平台中,检查用户是否符合条件规则,如角色,部门 等,如果匹配,则查找对应的sql过滤语句.需要在分页之前构造好一个完整的sql,这样查询出来的就是符合数据权限规则的,而不是查出来再过滤.
编辑权限和删除的实现方式类似,不过sql语句多少有点差异,即当用户符合某条件时,数据过滤sql只起到一个select count(*)的作用,例:select count(*) from 表名 where rowId =当前选中行 and 其他约束条件,如果count(*)>0,则可编辑或删除.
(具体实现方式以后补充详细的文档)