Salesforce中的Apex Class Security设定问题

在我以往的印象中,给Profile设定VF和Apex Class的访问权限,都是需要什么就加什么。

比如新建了一个VF叫PageA, 又新建了一个Controller叫ControllerA,然后新建了一个被Controller调用的工具类ToolA。
那么,在此Profile中,PageA,ControllerA和ToolA通通都要加到Profile的访问权限里。

如果只添加了PageA,按理说应该是无法正常执行才对。

但通过实践,发现就算只添加了PageA的权限,整个功能仍然能正常运行。与之前的印象不符。

所以去查了文档,发现官方给出的解释是这样的:

Permission for an Apex class is checked only at the top level. For example, if class A calls class B, and a user profile has access only to class A but not class B, the user can still execute the code in class A. Likewise, if a Visualforce page uses a custom component with an associated controller, security is only checked for the controller associated with the page. The controller associated with the custom component executes regardless of permissions.

就是说如果代码之间存在着依赖链,那么权限判断中,只关注最顶层的那个代码。按照这个逻辑下来,只要拥有了PageA的权限,因为PageA与ControllerA的依赖关系,就自动获取了ControllerA的访问权限,同理ToolA。

知其然,不知其所以然还是不对的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据