当我们设计功能的时候,通常会需要用到基于Page的权限检测,BC默认提供了基于表的READPERMISSION / WRITEPERMISSION 检查,但是基于Page, 以及Page相关来源表以及Page界面元素的关联表检查并未实现,为了开发过程中的高效,我们实现了 通用权限检查函数,可以非常方便的对Page/Report相关依赖来源进行权限检查和判断,提前对功能做执行判断。
下面直接上BC代码。
GetSourceTableNo 用于返回当前对象ID的默认Source Table, 支持 Page / Codeunit / Report
原理是,从 Page Metadata, Codeunit Metadata, Report Metadata中直接获取数据
权限检查,原理是,基于 公有的Codeunit Effective Permission Mgt. 进行权限检查,如果由相应的执行或RIMD任一权限,则返回True, 否则返回False。
在此基数上,还可以扩展和举一反三,应用到关联表检查,数据来源是Table Relations Metadata。期待你的挖掘和分享。
评论已关闭