一个可能的列级权限控制方案讨论 博客分类: 技术 OracleAccess项目管理编程配置管理
程序员文章站
2024-03-18 20:33:40
...
最近的项目需要做到列级权限控制, 大意如下
需求是 角色1 可对 attr1 进行读操作, 对 attr2 进行写操作, 而 角色2 对 attr1, attr2 都没有读权限.
目前考虑的方案 : 主要是在 ui 上控制, 如果没有读权限, 则显示空或无权限, 如果只有读权限, 则控制输入框为只读.
实现 : 建一张表用以纪录角色对 DomainObject 各属性的权限, 使用 webwork interceptor 拦截所有页面上的 ww 标签访问, 然后到配置表中查找权限信息, 如果查到匹配, 就将信息记录在一个集合中(类似 fieldError), 不妨称之为 fieldSecurityInfo, 最后更改标签模板, 根据 fieldSecurityInfo 中的信息做相应控制, 感觉大体可行.
目前的问题是 :
1. 如何拦截 <ww:> 标签的访问 ?
2. 只在 ui 上控制是否足够安全? 如果需要后台控制, 觉得难度工作量更大.
有做过类似需求的同学, 请不吝发言
public class DomainObject { private String attr1; private String attr2; }
需求是 角色1 可对 attr1 进行读操作, 对 attr2 进行写操作, 而 角色2 对 attr1, attr2 都没有读权限.
目前考虑的方案 : 主要是在 ui 上控制, 如果没有读权限, 则显示空或无权限, 如果只有读权限, 则控制输入框为只读.
实现 : 建一张表用以纪录角色对 DomainObject 各属性的权限, 使用 webwork interceptor 拦截所有页面上的 ww 标签访问, 然后到配置表中查找权限信息, 如果查到匹配, 就将信息记录在一个集合中(类似 fieldError), 不妨称之为 fieldSecurityInfo, 最后更改标签模板, 根据 fieldSecurityInfo 中的信息做相应控制, 感觉大体可行.
目前的问题是 :
1. 如何拦截 <ww:> 标签的访问 ?
2. 只在 ui 上控制是否足够安全? 如果需要后台控制, 觉得难度工作量更大.
有做过类似需求的同学, 请不吝发言