你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 CAPTCHA 显示控件验证 CAPTCHA 质询字符串

使用 CAPTCHA 显示控件生成 CAPTCHA 质询字符串,然后通过要求用户输入他们看到或听到的内容来验证它。 若要显示 CAPTCHA 显示控件,请从 自断言技术配置文件引用它,必须将自断言技术配置文件的 setting.enableCaptchaChallenge 元数据值设置为 true

屏幕截图显示了注册页上显示的 CAPTCHA 显示控件:

Screenshot of CAPTCHA as it appears in the sign-up page.

注册页使用 CAPTCHA 显示控件加载。 然后,用户输入他们看到或听到的字符。 “ 发送验证码”按钮将验证码 发送到用户的电子邮件,并且不是 CAPTCHA 显示控件元素,但它会导致验证 CAPTCHA 质询字符串。

CAPTCHA 显示控件元素

下表汇总了 CAPTCHA 显示控件包含的元素。

元素 必须 说明
UserInterfaceControlType 值必须是 CaptchaControl
InputClaims 需要一个或多个声明作为输入来指定 CAPTCHA 质询类型并唯一标识质询。
DisplayClaims 要向用户显示的声明(例如 CAPTCHA 质询代码)或从用户收集的声明,例如用户输入的代码
OutputClaim 用户完成 CAPTCHA 代码验证过程后,要返回到自断言页面的任何声明。
操作 CAPTCHA 显示控件包含两个操作: GetChallengeVerifyChallenge
GetChallenge 操作生成,然后在用户界面上显示 CAPTCHA 质询代码。
VerifyChallenge 操作验证用户输入的 CAPTCHA 质询代码。

以下 XML 代码片段代码显示了 CaptchaProvider 显示控件的示例:

<DisplayControls>
    ...
    <DisplayControl Id="captchaControlChallengeCode" UserInterfaceControlType="CaptchaControl" DisplayName="Help us beat the bots">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="challengeType" />
        <InputClaim ClaimTypeReferenceId="challengeId" />
      </InputClaims>
    
      <DisplayClaims>
        <DisplayClaim ClaimTypeReferenceId="challengeType" ControlClaimType="ChallengeType" />
        <DisplayClaim ClaimTypeReferenceId="challengeId" ControlClaimType="ChallengeId" />
        <DisplayClaim ClaimTypeReferenceId="challengeString" ControlClaimType="ChallengeString" />
        <DisplayClaim ClaimTypeReferenceId="captchaEntered" ControlClaimType="CaptchaEntered" />
      </DisplayClaims>
    
      <Actions>
        <Action Id="GetChallenge">
          <ValidationClaimsExchange>
            <ValidationClaimsExchangeTechnicalProfile
              TechnicalProfileReferenceId="HIP-GetChallenge" />
          </ValidationClaimsExchange>
        </Action>
    
        <Action Id="VerifyChallenge">
          <ValidationClaimsExchange>
            <ValidationClaimsExchangeTechnicalProfile
              TechnicalProfileReferenceId="HIP-VerifyChallenge" />
          </ValidationClaimsExchange>
        </Action>
      </Actions>
    </DisplayControl>
    ...
</DisplayControls>

后续步骤