You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Azure B2C自定义政策的VerificationControl设置默认已验证状态

解决方案

针对你遇到的自定义DisplayControl验证问题,以下是对应需求的实现方法:

1. 设置默认已验证状态

在自定义DisplayControl的初始化逻辑(比如onLoad或组件挂载生命周期)中,直接将控件的验证状态标记为已验证。以Azure AD B2C自定义控件为例,可通过self.validationStatus控制:

self.onLoad = function () {
    // 即使未输入过邮箱,默认标记为已验证状态
    self.validationStatus = true;
    updateUI();
};

如果是React等框架开发的控件,在useEffect或componentDidMount中初始化验证状态为true即可。

2. 替换默认按钮为“更改”按钮

修改UI渲染逻辑,默认状态下隐藏输入框与“发送验证码”按钮,展示当前邮箱(或“未设置邮箱”提示)和“更改”按钮;点击“更改”后切换到编辑模式,显示输入框与验证码相关控件:

function updateUI() {
    const emailInput = document.getElementById('email-input');
    const changeBtn = document.getElementById('change-btn');
    const verifyBtn = document.getElementById('verify-btn');

    if (self.isEditing) {
        emailInput.style.display = 'block';
        verifyBtn.style.display = 'block';
        changeBtn.style.display = 'none';
    } else {
        emailInput.style.display = 'none';
        verifyBtn.style.display = 'none';
        changeBtn.style.display = 'block';
    }
}

// 绑定“更改”按钮点击事件
document.getElementById('change-btn').addEventListener('click', function() {
    self.isEditing = true;
    updateUI();
});

3. 未更改邮箱时跳过验证

监听邮箱输入框的内容变化,对比当前输入值与原始邮箱值(从用户初始配置中获取)。若两者一致,保持验证通过状态;若不一致,则要求重新验证:

// 存储用户进入页面时的原始邮箱值
const originalEmail = self.inputs.email.value || '';

document.getElementById('email-input').addEventListener('input', function(e) {
    const currentEmail = e.target.value;
    if (currentEmail === originalEmail) {
        // 未修改邮箱,维持验证通过状态
        self.validationStatus = true;
    } else {
        // 修改了邮箱,需重新验证
        self.validationStatus = false;
    }
    // 通知父组件更新按钮状态
    self.notifyValidationStatusChanged();
});

同时在控件的getOutputs方法中,仅当邮箱被修改时返回新值,否则返回原始值,避免触发不必要的验证逻辑。


内容的提问来源于stack exchange,提问作者kat1330

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:04:54