检测用户对Page、Report、Codeunit的访问权限

yeats 2022-03-13 PM 760℃ 0条

当我们设计功能的时候,通常会需要用到基于Page的权限检测,BC默认提供了基于表的READPERMISSION / WRITEPERMISSION 检查,但是基于Page, 以及Page相关来源表以及Page界面元素的关联表检查并未实现,为了开发过程中的高效,我们实现了 通用权限检查函数,可以非常方便的对Page/Report相关依赖来源进行权限检查和判断,提前对功能做执行判断。

下面直接上BC代码。

image

GetSourceTableNo 用于返回当前对象ID的默认Source Table, 支持 Page / Codeunit / Report

原理是,从 Page Metadata,  Codeunit Metadata,  Report Metadata中直接获取数据

image

权限检查,原理是,基于 公有的Codeunit Effective Permission Mgt. 进行权限检查,如果由相应的执行或RIMD任一权限,则返回True, 否则返回False。

在此基数上,还可以扩展和举一反三,应用到关联表检查,数据来源是Table Relations Metadata。期待你的挖掘和分享。

标签: none

非特殊说明,本博所有文章均为博主原创。

评论已关闭