salesforce developer console 匿名执行是以什么身份执行的

在 Salesforce 开发者控制台中的"匿名执行"代码(Anonymous Apex)是以当前登录用户的身份执行的。执行时会根据该用户的权限、共享设置和数据访问权限来决定代码的实际访问范围。

因此,在匿名执行中:

  • 代码会遵守当前用户的数据访问控制(Sharing Rules),只能访问当前用户有权限查看或编辑的数据。
  • 如果需要以"系统模式"执行(忽略共享规则),可以在匿名 Apex 中使用 without sharing 关键字声明一个类并在其中执行相关逻辑。

如果管理员账号对某个字段不可见,那么在开发者控制台的匿名执行中也无法访问该字段。这是因为匿名执行会遵循当前用户的字段级别安全性(Field-Level Security,FLS),即便是管理员账号,如果该字段在配置中对管理员不可见,匿名执行也无法访问。

解决方案

如果需要在匿名执行中访问受限字段,可以尝试以下方法:

  1. 检查和调整字段级别安全性:确认管理员账号是否具备该字段的读取或写入权限。
  2. 在系统模式下执行代码 :将需要的逻辑封装到 without sharing 的类方法中,并通过执行匿名 Apex 调用该方法。注意,这仅忽略共享规则,但不忽略字段级别的安全性。因此,仍然需要确保管理员对该字段的访问权限已被授予。
  3. 权限集或配置文件更新:直接为管理员配置所需字段的访问权限。这样,匿名执行时可以直接访问这些字段。

系统模式 下执行代码时,Salesforce 会忽略共享规则(Sharing Rules) ,但不会忽略字段级别安全性(Field-Level Security, FLS)。因此,即使代码运行在系统模式下,如果当前用户对某个字段没有可见权限,系统模式下的代码依然无法访问该字段。

关键点总结

  • 系统模式:忽略共享规则,允许代码访问所有记录数据,但不忽略字段级别安全性。
  • 字段级别安全性(FLS):即使在系统模式下,字段级别安全性仍然生效,无法访问当前用户无权限查看的字段。

解决方案

如果希望在系统模式下访问特定字段,可以考虑:

  1. 检查权限配置:确保管理员或执行代码的用户有该字段的访问权限。
  2. 绕过字段级别安全性 :在某些情况下,可以在自定义接口(如 REST API)中,通过 Schema.DescribeFieldResult 检查字段权限并动态执行逻辑。

不过存在一种情况,即在系统模式下执行的 Apex 代码可以忽略字段级别安全性(FLS) 。在 Salesforce 中,触发器(Triggers)批处理(Batch Apex)计划任务(Scheduled Apex) 以及某些 非匿名执行 的 Apex 类会在系统模式下运行,并能够访问所有字段和记录数据,而不受字段级别安全性的限制。

因此,匿名执行(Anonymous Apex) 是遵循当前用户的字段权限的,但其他在系统模式下执行的 Apex(如触发器和批处理)可以直接访问字段,即使当前用户没有权限。

区分匿名执行与系统模式下的执行

  1. 匿名执行(Anonymous Apex):始终遵循当前用户的字段级别安全性。
  2. 触发器、批处理和计划任务:在系统模式下运行,不受字段级别安全性影响,能够访问所有字段。

示例场景

  • 如果在开发者控制台使用匿名执行代码测试访问字段权限,则会受到字段级别安全性限制。
  • 但在触发器或批处理类中,即使用户没有对某个字段的访问权限,代码依然可以访问并操作该字段。

因此,如果希望绕过字段级别安全性,可以通过触发器或批处理类的方式来执行逻辑,这些运行在系统模式下的代码不受字段权限限制。

相关推荐
oioihoii10 分钟前
C++23中if consteval / if not consteval (P1938R3) 详解
java·数据库·c++23
带娃的IT创业者15 分钟前
《AI大模型趣味实战》基于RAG向量数据库的知识库AI问答助手设计与实现
数据库·人工智能
迷路的小绅士1 小时前
常见网络安全攻击类型深度剖析(四):跨站脚本攻击(XSS)——分类、漏洞利用与前端安全防护
前端·安全·web安全
husterlichf1 小时前
MYSQL 常用数值函数 和 条件函数 详解
数据库·sql·mysql
我的golang之路果然有问题1 小时前
快速了解redis,个人笔记
数据库·经验分享·redis·笔记·学习·缓存·内存
自由鬼2 小时前
开源漏洞扫描器:OpenVAS
运维·服务器·安全·网络安全·开源·漏洞管理
卡皮巴拉爱吃小蛋糕2 小时前
MySQL的MVCC【学习笔记】
数据库·笔记·mysql
农民也会写代码2 小时前
dedecms织梦arclist标签noflag属性过滤多个参数
开发语言·数据库·sql·php·dedecms
m0_748232922 小时前
你还在手动画ER图吗?让SQL自动生成ER图,轻松解决作业难题!
数据库·sql·oracle
清流君2 小时前
【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作
数据库·人工智能·笔记·mysql·ue5·数字孪生