Secure Apex Classes

DEX475 - Call Apex Methods

📄 第 315 页 🎬 视频课程

课程章节介绍

同学们,今天我们来聊聊Apex代码里的安全防线。想象一下,你写的Apex方法在Lightning Web Components里被调用,如果数据保护没做好,就容易泄露不该看的信息。所以我们要掌握三道安全关卡。 ,第一道:用户访问权限。, 也就是谁能调用你的Apex类。很简单,必须通过配置文件或权限集,把类的访问权限授予当前运行的这位用户。如果他根本没权限调用这个类,代码根本跑不起来——这是最基础的“门禁”。 ,第二道:共享规则——记录级安全。, 控制的是“用户能看到哪些记录”。我们在定义类的时候可以明确声明 `with sharing`,让代码老老实实遵守组织设定的角色、共享规则,只检索用户有权查看的记录。万一用 `without sharing`,就等于绕过记录级的限制,能拿到所有记录,风险很大,一定要谨慎使用。好消息是,从API 67.0版本开始,如果什么都不写,默认就是按照共享规则运行,安全系数提高了不少。 ,第三道:对象和字段级安全,也就是CRUD和FLS。, 光能调用类、能看到记录还不够,还得管住用户能看或能改哪个字段。推荐大家在SOQL查询里直接加上 `WITH USER_MODE`,它会自动检查当前用户对这个对象和字段的访问权限,权限不够就直接报错拦截。如果某些场景下你想跳过这个检查,可以用 `WITH SYSTEM_MODE`,但这同样要特别小心。 有时候我们不想让代码粗暴报错,希望用户体验更平滑,那就可以用优雅降级的方式。`Security.stripInaccessible()` 这个方法会把查询结果里用户没有权限的字段直接“剥离”掉,剩下能看的字段照常返回,不会抛异常。剥了哪些呢?通过 `getModifiedIndexes()` 能找出被动手脚的记录,然后你可以有选择地抛出一个自定义的 `AuraHandledException`,给前端传回友好的提示信息。 最后提醒一下,过去用 `describeResult` 一点点手写 `isAccessible`、`isUpdatable` 这些检查的方式,样板代码一大堆,现在完全不推荐了。新代码请直接拥抱 `WITH USER_MODE` 或 `stripInaccessible()`,既简洁又安全。 牢记这三层防护——用户权限、共享规则、字段级安全,你在Apex里就能稳稳守住数据的底线。好了,这节课就到这里,下回见!

关键词

LWC Lightning Web Components Salesforce