在JS脚本中,使用Web Api,我正在获取具有字段级别安全性的特定实体字段的值。然后我想在 Web 资源中显示此值。如何检测当前用户是否有权读取该特定字段?
getUserPrivilege
(编辑:Guido指出此方法在以前的CRM版本中也可用(。getUserPrivilege - 返回一个对象,该对象具有三个布尔属性,这些属性对应于权限,指示用户是否可以创建、读取或更新属性的数据值。此函数适用于字段级别安全性修改用户对特定属性的权限
formContext.getAttribute(arg).getUserPrivilege()
这将返回canRead
、canUpdate
、canCreate
布尔值,因此您可以决定要做什么。
参考
仅当用户通过字段安全性配置文件具有适当的读取访问权限时,才会返回该值。因此,您无需显式检查用户是否有权读取该字段。
从字段级安全性到控制访问:
字段级别安全性的范围是组织范围的,适用于 所有数据访问请求,包括以下内容:
来自客户端应用程序(如 Web 浏览器、移动客户端或 Dynamics 365 for Outlook(Microsoft中的数据访问请求。
使用 Dynamics 365 客户互动 Web 服务的 Web 服务调用(用于插件、自定义工作流活动和自定义 代码(
报告(使用过滤视图(
好吧,问题的原因非常愚蠢:缓存问题。第一次,我以管理员身份连接到CRM,然后我断开连接并以较少的权限登录,但由于缓存的"强大",我仍然能够在Web资源中查看该字段。在专用窗口中查看表单时,字段级别安全性在 Web 资源中工作。但奇怪的是,在正常窗口中,字段级别安全性以表单形式工作(字段值不可见(,但在 Web 资源中不起作用。