我有一个注册流程,它运行良好并且是多步骤的:
- 联系方式
- 确认
- 密码
现在的流程是,在完成所有步骤后,将创建一个新用户,如果用户名已经存在,那么在最后一步我会收到一条错误消息,指出用户已经存在。现在我需要改变这个流程。输入联系方式(电子邮件)后,我想检查该用户是否存在。如果存在,那么我需要显示在第一步本身的最后一步中显示的错误消息,并阻止旅程进入下一步。
为此,我所做的是:
创建了一个使用电子邮件读取用户详细信息的 TP,并将其作为第一步的验证技术配置文件:
<TechnicalProfile Id="AAD-CheckUserExist">
<Metadata>
<Item Key="Operation">Read</Item>
<Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
</Metadata>
<IncludeInSso>false</IncludeInSso>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
</InputClaims>
<OutputClaims>
<!-- Required claims -->
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
<!-- Optional claims -->
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="accountEnabled" />
<OutputClaim ClaimTypeReferenceId="otherMails" />
<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress"/>
<OutputClaim ClaimTypeReferenceId="signInNames.phoneNumber"/>
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
</OutputClaims>
<IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>
并添加<Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
到<Metadata>
.
以下是验证配置文件部分:
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-CheckUserExist" ContinueOnError="false"/>
</ValidationTechnicalProfiles>
但它没有按预期工作,我在第一步单击下一步后尝试与现有用户一起移动验证步骤而没有任何错误。