サインアップフローがあり、正常に機能しており、複数のステップがあります。
- 連絡先の詳細
- 検証
- パスワード
そして今、フローは、すべての手順を完了した後、新しいユーザーが作成され、ユーザー名が既に存在する場合、最後の手順でユーザーが既に存在するというエラーメッセージが表示されます。今、私はこの流れを変える必要があります。連絡先(メールアドレス)を入力後、このユーザーが存在するかどうかを確認したい。存在する場合は、最初のステップ自体の最後のステップで表示されるエラー メッセージを表示し、ジャーニーが次のステップに移動するのをブロックする必要があります。
これを達成するために、私がしたことは次のとおりです。
電子メールを使用してユーザーの詳細を読み取る 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>
しかし、期待どおりに機能していません。最初のステップで次へをクリックした後、エラーなしで検証ステップに移動した後、既存のユーザーで試しました。