之前权限系统基于ColaUI和BDF2,现在其基础上进行改造 要求: 1.实现资源控制和权限控制 2.用户依据角色资源和权限,实现用户级资源和权限递减 3.资源控制主要控制页面和组件 4.权限主要控制数据层 重写部分: 角色表 角色页面表 角色页面组件表 角色权限表 用户页面表 用户页面组件表 用户权限表 角色表用于保存角色的基本信息 角色页面表用于保存该角色可查看的页面信息(基于菜单表递减) 角色页面组件表用于保存该角色可查看的页面内的组件信息(基于组件表递减) 角色权限表用于保存该角色可操作的数据信息(基于该账号所属机构现有数据的某些字段值递减) 用户页面表用于保存该用于不可看的页面信息(基于角色页面表) 用户页面组件表同上取反 用户权限表用于保存该用户可看的数据(基于角色权限表) A表基于B表,则A表的值最大为B表的值 这些表的增删改并不是重点,重点是将设置的值接入系统 接入点: 1.用户登录后获取角色及其对应的菜单项(版本替换过程中还需保证不影响原来的权限系统) 2.点击菜单加载对应的页面信息时(页面权限判断) 3.页面加载时组件的过滤(组件权限的判断) 4.数据请求时数据的过滤(数据权限的判断) 注意: 1.页面组件及数据权限过滤时接口全都基于用户查询 2.菜单加载时需考虑对原系统的影响,避免线上系统出现问题 3.页面权限判断深入框架内部,需修改jar包实现接入; 如没有找到接口,可暂将资源设置的结果集映射的原系统表进行替代 4.组件权限过滤已在“ColaUI组件过滤”中提出,可替换其查询路径进行接口替换 5.数据过滤基于账号所属机构,主要在Dao层进行限定
每日归档: 2018年7月10日
ColaUI组件过滤设置
ColaUI配合后端BDF2框架共同实现组件级权限控制 在请求页面资源时通过js代码对页面进行权限过滤
<!--测试组件--> <div id='test'></div>
(function() { cola(function(model) { var role_resource_data={ url:'/html/test.html', ids:['test'] }; //其它代码 App.resetComponentAuth(role_resource_data); }); }).call(this);
注意事项: 1.对应id组件上方如果不加注释,那么在进行角色组件资源设置时显示的是id; 添加注释后则显示注释中的内容 2.url对应值为要控制的页面路径,从webapp下开始写 3.ids为要控制的页面中的id组件集合,不写入则组件控制无效 4.在其他代码部分不能出现return,例如return model.widgetConfig({...}); 否则代码不执行最后一行,无法进行组件过滤 5.最后一行代码进行了数据库访问,对组件权限信息进行获取,并刷新页面