整数声明转换

本文提供了有关在 Azure Active Directory B2C (Azure AD B2C) 中使用标识体验框架架构的整数声明转换的示例。 有关详细信息,请参阅 ClaimsTransformations

AdjustNumber

增加或减少数值声明并返回新声明。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 说明
InputClaim inputClaim int 声明类型,其中包含要增加或减少的数量。 如果 inputClaim 声明值为 null,则使用默认值 0。
InputParameter 运算符 字符串 可能的值为 INCREMENT(默认)或 DECREMENT
OutputClaim outputClaim int 调用此声明转换后生成的声明类型。

AdjustNumber 示例

使用此声明转换来增加或减少数值声明值。 以下声明转换增加了数字声明值。

<ClaimsTransformation Id="UpdateSteps" TransformationMethod="AdjustNumber">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="steps" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="Operator" DataType="string" Value="INCREMENT" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="steps" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • inputClaim:1
  • 输入参数:
    • Operator:INCREMENT
  • 输出声明:
    • outputClaim:2

具有 null 值的 AdjustNumber 示例

如果输入声明为 null,则输出声明将为 1。

  • 输入声明:
    • inputClaim:NULL
  • 输入参数:
    • Operator:INCREMENT
  • 输出声明:
    • outputClaim:1

AssertNumber

确定数值声明大于、小于、等于还是不等于某一数字。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 说明
InputClaim inputClaim int 第一个数值声明,用于比较它大于、小于、等于还是不等于第二个数字。 Null 值会引发异常。
InputParameter CompareToValue int 第二个数字,用于比较它大于、小于、等于还是不等于第一个数字。
InputParameter 运算符 字符串 可能的值:LessThanGreaterThanGreaterThanOrEqualLessThanOrEqualEqualNotEqual
InputParameter throwError boolean 指定比较结果为 true 时,此断言是否应引发错误。 可能的值为 true(默认)或 false
 
如果设置为 true(断言模式)并且比较结果为 true,则会引发异常。 如果设置为 false(计算模式),结果为一个新的布尔声明类型,值为 truefalse
OutputClaim outputClaim boolean 如果 ThrowError 设置为 false,根据比较结果,此输出声明将包含 truefalse

断言模式

throwError 输入参数为 true(默认)时,AssertNumber 声明转换始终从验证技术配置文件执行,该文件由自断言技术配置文件调用。

AssertNumberError 自断言技术配置文件元数据控制技术配置文件向用户呈现的错误消息。 可以将错误消息本地化

<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
  <Metadata>
    <Item Key="AssertNumberError">You've reached the maximum logon attempts</Item>
  </Metadata>
  ...
</TechnicalProfile>

有关如何在断言模式下调用声明转换的详细信息,请参阅 AssertStringClaimsAreEqualAssertBooleanClaimIsEqualToValueAssertDateTimeIsGreaterThan 声明转换。

AssertNumber 示例

以下示例断言尝试次数超过五次。 声明转换根据比较结果引发错误。

<ClaimsTransformation Id="isOverLimit" TransformationMethod="AssertNumber">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="attempts" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="Operator" DataType="string" Value="GreaterThan" />
    <InputParameter Id="CompareToValue" DataType="int" Value="5" />
    <InputParameter Id="throwError" DataType="boolean" Value="true" />
  </InputParameters>
</ClaimsTransformation>
  • 输入声明:
    • inputClaim:10
  • 输入参数:
    • 运算符:GreaterThan
    • CompareToValue:5
    • throwError:true
  • 结果:引发错误

AssertNumber 求值模式示例

以下示例计算尝试次数是否超过五次。 根据比较结果,输出声明包含一个布尔值。 声明转换不会引发错误。

<ClaimsTransformation Id="isOverLimit" TransformationMethod="AssertNumber">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="attempts" TransformationClaimType="inputClaim" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="Operator" DataType="string" Value="GreaterThan" />
    <InputParameter Id="CompareToValue" DataType="int" Value="5" />
    <InputParameter Id="throwError" DataType="boolean" Value="false" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="attemptsCountExceeded" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • inputClaim:10
  • 输入参数:
    • 运算符:GreaterThan
    • CompareToValue:5
    • throwError:false
  • 输出声明:
    • outputClaim: true

ConvertNumberToStringClaim

将 long 数据类型转换为字符串数据类型。 查看此声明转换的实时演示

元素 TransformationClaimType 数据类型 说明
InputClaim inputClaim long 要转换为字符串的声明类型。
OutputClaim outputClaim 字符串 调用此声明转换后生成的声明类型。

ConvertNumberToStringClaim 示例

在此示例中,值类型为 long 的 numericUserId 声明将转换为值类型为字符串的 UserId 声明。

<ClaimsTransformation Id="CreateUserId" TransformationMethod="ConvertNumberToStringClaim">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="numericUserId" TransformationClaimType="inputClaim" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="UserId" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • 输入声明:
    • inputClaim: 12334 (long)
  • 输出声明:
    • outputClaim: "12334" (string)

后续步骤