返回

透视SAP CDS实体中@readonly的访问控制

后端

引言
@readonly是一个访问修饰符,用于在SAP CDS实体中定义只读字段或关联。这通常是为了确保数据不会被意外更改而使用,而只能由授权用户通过API进行更改。在本文中,我们将介绍如何在SAP CDS实体中使用@readonly来控制对数据的访问。

CDS实体中的@readonly

@readonly访问修饰符只能用于CDS实体的字段或关联。在字段级别,它表示该字段只能被系统或授权用户更新,而不能被应用程序直接更新。在关联级别,它表示该关联只能被系统或授权用户使用,而不能被应用程序直接使用。例如,以下代码定义了一个具有只读字段和只读关联的CDS实体:

entity MyEntity {
  id: Key;
  name: String(255) @readonly;
  description: String(1024);
  parent: MyParent @readonly;
}

服务实现中的访问控制

在服务实现中,可以通过在服务定义文件中添加相应的声明来限制对数据的访问。这些声明可以用于控制哪些用户可以访问实体中的字段或关联,以及哪些用户可以更新或创建实体。例如,以下代码定义了一个服务定义文件,它将实体MyEntity的name字段限制为只能由授权用户访问:

service {
  entity MyEntity {
    field name {
      access: read-only;
    }
  }
}

OpenUI5中的访问控制

在OpenUI5中,可以通过在组件的metadata.xml文件中添加相应的声明来限制对数据的访问。这些声明可以用于控制哪些用户可以访问实体中的字段或关联,以及哪些用户可以更新或创建实体。例如,以下代码定义了一个组件的metadata.xml文件,它将实体MyEntity的name字段限制为只能由授权用户访问:

<annotations:Annotations xmlns:annotations="http://www.sap.com/Protocols/SAPDataServices/Annotations" xmlns="http://www.sap.com/Protocols/SAPDataServices/Metadata">
  <annotations:Annotation Term="com.sap.vocabularies.Common.v1.ReadAccess">
    <annotations:Collection>
      <annotations:Property Property="name" Operator="EQ" Value="value1"/>
    </annotations:Collection>
  </annotations:Annotation>
</annotations:Annotations>

结论

使用@readonly访问修饰符和相应的声明来控制对数据的访问可以帮助确保数据不会被意外更改,同时仍然允许授权用户通过API进行更新。这对于保护敏感数据免受未经授权的访问非常重要。