📜  Apex-安全

📅  最后修改于: 2020-11-05 03:17:00             🧑  作者: Mango


Apex安全性是指在运行的代码上应用安全设置并强制执行共享规则的过程。 Apex类具有可通过两个关键字控制的安全设置。

数据安全和共享规则

Apex通常在系统上下文(即当前用户的权限)中运行。在代码执行过程中不考虑字段级安全性和共享规则。只有匿名阻止代码在执行代码的用户的许可下执行。

我们的Apex代码不应向用户公开敏感数据,而敏感数据会通过安全性和共享设置隐藏。因此,Apex安全性和实施共享规则至关重要。

使用共享关键字

如果使用此关键字,则Apex代码将强制当前用户与Apex代码的“共享”设置。这不会强制执行“配置文件”权限,只会强制执行数据级别共享设置。

让我们考虑一个示例,其中,我们的用户有权访问5条记录,但记录总数为10。因此,当使用“ With Sharing”关键字声明Apex类时,它将仅返回该用户的5条记录有权使用。

首先,请确保您已在“客户”对象中创建了至少10条记录,“名称”为5条记录为“ ABC客户”,其余5条为“ XYZ客户”。然后,创建一个共享规则,该规则将与所有用户共享“ ABC客户”。我们还需要确保已将Customer对象的OWD设置为Private。

将下面给出的代码粘贴到开发者控制台中的“匿名”块。

// Class With Sharing
public with sharing class MyClassWithSharing {
   // Query To fetch 10 records
   List CustomerList = [SELECT id, Name FROM APEX_Customer__c LIMIT 10];
   
   public Integer executeQuery () {
      System.debug('List will have only 5 records and the actual records are' 
         + CustomerList.size()+' as user has access to'+CustomerList);
      Integer ListSize = CustomerList.size();
      return ListSize;
   }
}

// Save the above class and then execute as below
// Execute class using the object of class
MyClassWithSharing obj = new MyClassWithSharing();
Integer ListSize = obj.executeQuery();

不共享关键字

顾名思义,用此关键字声明的类在系统模式下执行,即,不管用户对记录的访问如何,查询都将获取所有记录。

// Class Without Sharing
public without sharing class MyClassWithoutSharing {
   List CustomerList = [SELECT id, Name FROM APEX_Customer__c LIMIT 10];
   
   // Query To fetch 10 records, this will return all the records
   public Integer executeQuery () {
      System.debug('List will have only 5 records and the actula records are'
         + CustomerList.size()+' as user has access to'+CustomerList);
      Integer ListSize = CustomerList.size();
      return ListSize;
   }
}
// Output will be 10 records.

设置Apex类的安全性

您可以为特定配置文件启用或禁用Apex类。下面给出了相同的步骤。您可以确定哪个配置文件应有权访问哪个类。

从班级列表页面设置Apex班级安全性

步骤1-在设置中,单击开发→Apex类。

设置Apex Cass安全性Step1

步骤2-单击要限制的类的名称。我们单击了CustomerOperationClass。

设置Apex Cass安全性Step2

步骤3-单击安全性。

设置Apex Cass安全性Step3

步骤4-从“可用的配置文件”列表中选择要启用的配置文件,然后单击“添加”,或者从“启用的配置文件”列表中选择要禁用的配置文件,然后单击“删除”。

设置Apex类安全性Step3

步骤5-单击保存。

从权限集设置Apex安全性

步骤1-在设置中,单击管理用户→权限集。

从Permissionset步骤1设置Apex类安全性

步骤2-选择权限集。

从Permissionset步骤2设置Apex类安全性

步骤3-单击Apex Class Access。

从权限集设置Apex类安全性Step3

步骤4-单击编辑。

从权限集设置Apex类安全性Step4

步骤5-从“可用Apex类”列表中选择要启用的Apex类,然后单击“添加”,或者从“已启用Apex类”列表中选择要禁用的Apex类,然后单击“删除”。

从权限集设置Apex类安全性Step5

步骤6-单击保存按钮。