ADB2C自定义注册表单特殊手机号校验实现方案咨询
ADB2C注册手机号自定义校验(拦截全相同数字无效号码)可行方案
以下三种方案都适配自定义政策的技术架构,可根据你的业务需求选择:
方案1:自定义政策内置正则校验(最推荐,无额外服务依赖)
这个方案的校验逻辑直接在ADB2C服务端执行,就算用户绕过前端规则也无法提交,可靠性最高:
- 找到注册用户流中对应手机号的
ClaimType定义,在Restriction节点下新增正则校验规则 - 匹配规则用正则
^(?!(\d)\1{9})\d{10}$即可,逻辑是只允许10位数字,同时排除10位全部为相同数字的情况 - 配套配置自定义错误提示,拦截时直接展示给用户
参考配置示例:
<ClaimType Id="phoneNumber"> <DisplayName>手机号码</DisplayName> <DataType>String</DataType> <UserInputType>TextBox</UserInputType> <Restriction> <Pattern RegularExpression="^(?!(\d)\1{9})\d{10}$" HelpText="请输入10位有效手机号码"/> <ErrorMessage>手机号码无效,不可使用全部为相同数字的10位号码</ErrorMessage> </Restriction> </ClaimType>
方案2:自定义页面嵌入前端JS校验
如果你的自定义政策使用了自定义HTML托管页面,可以用这个方案做前置拦截,减少服务端请求:
- 在自定义注册页面的HTML中新增JS脚本,监听手机号输入框的blur事件或者表单提交事件
- 编写校验逻辑:
const isInvalidPhone = /^(\d)\1{9}$/.test(用户输入的手机号),如果返回true说明是全相同数字的无效号码 - 校验不通过时阻止表单提交,在页面对应位置展示错误提示即可
注意:该方案属于前端校验,容易被用户篡改绕过,不要单独使用,建议配合服务端校验规则一起部署。
方案3:对接REST API技术配置文件校验
如果后续还有更复杂的手机号校验需求(比如校验号段合法性、是否是虚拟号等),可以选择这个灵活度最高的方案:
- 自行开发一个简单的REST接口,接收手机号参数,返回校验结果和错误提示
- 在自定义政策中新增REST API类型的技术配置文件,在注册流程的编排步骤里,插入调用该接口的步骤,位置放在用户提交信息之后、创建账号之前
- 接口返回校验失败时,直接中断注册流程,返回错误信息展示给用户即可
内容的提问来源于stack exchange,提问作者CloudSpace03
相关产品推荐
相关产品推荐

