ALFA中的常量(常量变量)

时间:2018-05-25 20:36:15

标签: authorization abac alfa

2015年3月10日的ALFA(alfa-for-xacml-v1.0-wd01)的OASIS工作草案01说明了常数值

  

3.15常量值

     

常量值可以出现在策略表达式中。 ALFA支持字符串,整数,类型的常量,   双打和布尔直接。字符串引用单个或   双引号。整数由数字和可选的减号组成   标志。 Double由带小数点的数字和可选的a组成   减号。布尔值由真值和假值组成,没有   引号。其他数据类型使用字符串后跟a表示   冒号和数据类型的名称..

这意味着,您可以使用该示例中的常量值(而report是常量值):

target clause requestedType == "report"

但问题是,一旦ALFA文件增长并且您已经编写了常量值report,您可能希望将常量值更改为let {}} my.company.attributes.medicalReport。为此,您必须找到并替换所有出现的常量值。

因此(为了避免冗余)constants是用其他语言发明的,你定义了smth。像

const string REPORT_TYPE = "my.company.attributes.medicalReport"

甚至更高性能:

const integer REPORT_TYPE_ID = 3

甚至更优雅:

const enum SUBJECT_TYPES { PATIENT, USER, EXAM, REPORT }

在定义了这些常量之后,我可以编写我的目标,如:

target clause requestedType == REPORT_TYPE_ID

ALFA是否支持常量或者是否有“模拟”它们的方法(可能是返回所需值的函数)?

1 个答案:

答案 0 :(得分:1)

还没有!这绝对是我们想要的功能。我们有类似的要求,请继续关注。