课程章节介绍
同学们好,今天我们来了解一下 Apex 中一个非常实用的安全方法,叫 `stripInaccessible`。你可能经常遇到这样的情况:查询数据或者从外部接收 sObject 记录时,里面有些字段当前用户并没有权限查看或编辑。一但直接拿这些记录去做增删改操作,系统就会抛出权限异常。那该怎么办呢?`stripInaccessible` 就专门来帮我们解决这个难题。
它的作用很简单,就是自动把查询结果,甚至子查询结果里那些当前用户无权访问的字段,全部“剥离”掉,从而严格执行字段级和对象级的数据保护。你可以在执行 DML 操作之前调用它,把 sObject 上不可访问的字段提前移除,这样子不但能避免异常,也能很好地清理来自不受信任来源的记录数据。
这个方法会返回一个跟源记录结构完全相同的列表,唯一的区别就是——其中用户无权访问的字段已经被清除了。相当于它给你了一组“干净”的记录,可以放心进行后续操作。
那么它背后的权限检查是怎么实现的呢?在最细的粒度上,其实用的是像 `DescribeSObjectResult` 和 `DescribeFieldResult` 这些描述类里提供的访问控制方法,比如 `isAccessible`、`isUpdatable`、`isDeletable`。`stripInaccessible` 在内部遍历每一个字段,挨个检查权限,然后把没权限的字段过滤掉。也就是说,它帮你封装好了这些繁琐的细粒度检查,你不需要自己写一堆判断逻辑。
所以,简单总结一下:`stripInaccessible` 是一个让数据操作更安全、更省心的工具。只要在查询或操作前调用它,就能确保只对有权限的字段进行操作,从根本上避免了因为字段安全限制而产生的运行时错误。
好了,关于 `stripInaccessible` 方法,我们就讲到这里。接下来,你可以动手试一试,看看它在实际项目中如何提升代码的安全性。
关键词
Apex
Salesforce
Developer Guide