Azure AD B2C自定义策略完成忘记密码流程后如何重定向到注册登录页
配置修改方案
问题根因
你当前的用户旅程配置中,密码重置子旅程执行完成后,流程会继续向下执行后续编排步骤,最终走到SendClaims步骤下发认证令牌,站点接收到令牌后会默认跳转至首页,因此无法停留在注册/登录页。
修改步骤
1. 调整PasswordReset子旅程输出声明
在你的PasswordReset子旅程的最后一个编排步骤中,新增输出声明isPasswordResetCompleted,值设为true,同时保留isForgotPassword声明传递回父旅程。
2. 插入跳转回登录页的编排步骤
在原第3步(密码重置子旅程调用步骤)之后新增一个编排步骤,将原第4到10步的Order属性依次加1,新增步骤配置如下:
<OrchestrationStep Order="4" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="signuporsignin-phone-email"> <Preconditions> <!-- 仅密码重置完成的场景执行本步骤,其余场景直接跳过 --> <Precondition Type="ClaimsExist" ExecuteActionsIf="false"> <Value>isPasswordResetCompleted</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsProviderSelections> <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninPhoneEmailExchange" /> <ClaimsProviderSelection TargetClaimsExchangeId="SignUpWithEmail" /> <ClaimsProviderSelection TargetClaimsExchangeId="SignUpWithPhone" /> <ClaimsProviderSelection TargetClaimsExchangeId="ChangePhoneNumber" /> <ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange" /> <ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" /> <ClaimsProviderSelection TargetClaimsExchangeId="LinkedInExchange" /> <ClaimsProviderSelection TargetClaimsExchangeId="ForgotPasswordExchange" /> </ClaimsProviderSelections> <ClaimsExchanges> <ClaimsExchange Id="LocalAccountSigninPhoneEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Phone-Email" /> </ClaimsExchanges> </OrchestrationStep>
3. 为后续步骤新增跳过条件
在调整序号后的第5到11步(原第4到10步)的Preconditions节点下,统一新增如下前置条件,避免密码重置场景下执行不必要的逻辑:
<Precondition Type="ClaimsExist" ExecuteActionsIf="true"> <Value>isPasswordResetCompleted</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition>
修改完成后,用户完成密码重置后会直接进入你需要的注册/登录页面,不会再下发令牌跳转至站点首页。
内容的提问来源于stack exchange,提问作者chander
相关产品推荐
相关产品推荐

