课程章节介绍
让我们来聊聊Salesforce中的共享关键字,特别是`WITH SHARING`和`WITHOUT SHARING`,以及`inherited sharing`的使用。
首先,`WITH SHARING`和`WITHOUT SHARING`这两个关键字是用来控制Apex类中的记录访问权限的。简单来说,`WITH SHARING`意味着这个类会遵循Salesforce的共享规则,也就是说,用户只能看到他们有权限看到的记录。而`WITHOUT SHARING`则相反,它允许类绕过这些共享规则,访问所有记录,无论用户是否有权限。
现在,让我们谈谈`inherited sharing`。这个关键字是Salesforce引入的一个新特性,它的目的是让类的行为更加灵活和明确。当你使用`inherited sharing`时,这个类会根据调用它的类的共享模式来决定自己的行为。如果调用它的类使用了`WITH SHARING`,那么这个类也会遵循共享规则;如果调用它的类使用了`WITHOUT SHARING`,那么这个类就会绕过共享规则。
这里有一个重要的区别:如果一个类没有明确声明`WITH SHARING`或`WITHOUT SHARING`,那么它默认是不安全的,也就是说,它不会自动遵循共享规则。但是,如果你使用了`inherited sharing`,那么这个类默认会遵循共享规则,除非它被明确地从没有共享的上下文中调用。
总结一下,使用`inherited sharing`可以让你的代码更加安全和灵活,因为它会根据上下文自动调整行为,同时也能帮助你通过Salesforce的安全审查。这对于开发Lightning组件、Visualforce页面、Apex REST服务等场景非常有用。
希望这个解释能帮助你更好地理解这些共享关键字的作用和区别。如果有任何疑问,随时提问!