如何在自定义策略中仅注册流程调用REST API发送OTP邮件?
解决自定义策略中REST API仅在注册流程触发的问题
核心方案:通过预条件(Preconditions)区分流程类型
在自定义策略的编排步骤(Orchestration Steps)中,为调用REST API的步骤添加预条件,仅当当前执行注册流程时才触发API调用,登录流程自动跳过该步骤。
具体实现步骤
利用内置声明识别流程
B2C自定义策略提供内置声明用于区分流程:newUser:新用户注册时,该声明值为True;登录流程中该声明不存在或为FalsesignInName:登录流程中必然存在该声明,首次注册流程初始阶段不存在
为API调用步骤添加预条件
找到你定义的REST API调用编排步骤,添加以下预条件代码二选一即可:<!-- 方案1:通过newUser声明判断,适用于本地/社交账户注册 --> <Preconditions> <Precondition Type="ClaimEquals" ExecuteActionsIf="false"> <Value>newUser</Value> <Value>True</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions><!-- 方案2:通过signInName声明判断,适用于本地账户注册场景 --> <Preconditions> <Precondition Type="ClaimsExist" ExecuteActionsIf="true"> <Value>signInName</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions>逻辑说明:
- 方案1:仅当
newUser等于True(即新用户注册)时,才执行API调用;否则跳过 - 方案2:如果
signInName声明存在(即登录流程),直接跳过API调用步骤
- 方案1:仅当
校验流程节点顺序
- 若需在创建用户前发送OTP,将API调用步骤放在用户信息收集完成后、用户创建步骤之前
- 若需在用户创建后发送,将API调用步骤放在用户创建步骤之后,确保能获取到新用户的相关声明
内容的提问来源于stack exchange,提问作者Divya Singh
相关产品推荐
相关产品推荐

