VonaJS业务抽象层: 验证码体系

news/2025/11/3 9:34:30/文章来源:https://www.cnblogs.com/zhennann/p/19186078

验证码体系

VonaJS的内置模块a-captcha提供了通用的验证码体系,使用Captcha Provider支持各种验证码方式,并且使用Captcha Scene支持不同场景的验证码使用策略

特性

  • Captcha Provider:使用Captcha Provider支持各种验证码方式,如:文字图形验证码、短信验证码,等等
  • Captcha Scene:使用Captcha Scene支持不同场景的验证码使用策略。比如,在某个场景下,可以在多个 Captcha Provider 中进行轮替,或者根据用户状态使用不同难度的 Captcha Provider,等等
  • 立即验证:前端可以对用户输入的验证码进行立即验证。立即验证之后在提交表单时仍然要进行二次验证
  • 表单验证:前端可以将用户输入的验证码与表单数据一起发往后端验证

bean.captcha

模块a-captcha提供了全局 Bean bean.captcha,可以通过统一的方式使用所有 Provider/Scene 提供的验证码能力

模块a-captchasimple提供了一个 Provider a-captchasimple:imageText,基于svg-captcha实现文字图片的验证码能力

模块a-captchasimple提供了一个 Scene a-captchasimple:simple。该 Scene 只使用一个 Provider,即a-captchasimple:imageText

下面演示如何使用模块a-captchasimple提供的验证码能力

1. create

// create captcha
const captcha = await this.bean.captcha.create('a-captchasimple:simple');
  • 返回值类型:ICaptchaData
export interface ICaptchaData {id: string;provider: keyof ICaptchaProviderRecord;token?: unknown;payload: unknown;
}
名称 说明
id 本次验证码数据的id标识
provider 本次验证码所使用的Provider名称
token 本次验证码数据的token,用于比对用户输入值。在开发环境可以通过修改系统配置,将token发往前端,用于调试
payload 本次验证码的负载内容,不同的Provider有不同的payload类型

2. refresh

// refresh captcha
const captchaNew = await this.bean.captcha.refresh(captchaId, 'a-captchasimple:simple');
  • 如果一个 Scene 配置了多个 Provider,那么在刷新 capthca 时可以基于策略选取不同的 Provider

3. verify

// verify captcha
const passed = await this.bean.captcha.verify(captchaId, '1234', 'a-captchasimple:simple');

4. verifyImmediate

前端可以对用户输入的验证码进行立即验证立即验证之后在提交表单时仍然要进行二次验证

// verifyImmediate captcha
const tokenOrFalse = await this.bean.captcha.verifyImmediate(captchaId, '1234');
  • 如果立即验证失败,返回false
  • 如果立即验证成功,返回二次token
  • 前端需要将二次token与表单数据一起发往后端进行二次验证

interceptor.captchaVerify

模块a-captcha提供了一个局部拦截器a-captcha:captchaVerify,可以针对 API 启用验证码校验

src/suite/a-home/modules/home-user/src/controller/passport.ts

import { Core } from 'vona-module-a-core';class ControllerPassport {@Web.post('login')
+ @Core.captchaVerify({ scene: 'a-captchasimple:simple' })async login(@Arg.body() data) {}
}  
  • @Core.captchaVerify: 用于使用局部拦截器a-captcha:captchaVerify,传入需要使用的 Scene 名称
  • 该拦截器支持表单验证二次验证

Captcha API

模块a-captcha提供了一组开箱即用的 Captcha API,对bean.captcha的能力进行了封装

src/suite-vendor/a-vona/modules/a-captcha/src/controller/captcha.ts

名称 说明
create
refresh
verifyImmediate
  • 为何没有提供verifyAPI?

因为bean.captcha.verify方法用于局部拦截器a-captcha:captchaVerify

参数配置

可以在 App Config 中修改模块a-captcha的参数配置

src/backend/config/config/config.ts

// modules
config.modules = {'a-captcha': {captcha: {showToken: false,},captchaProvider: {ttl: 20 * 60 * 1000,ttlSecondary: 20 * 60 * 1000,},},
};
名称 说明
captcha.showToken 是否显示token。如果为true,就将token发往前端,用于调试。默认为false
captchaProvider.ttl captcha token的过期时间
captchaProvider.ttlSecondary 二次token的过期时间

资源

  • Github:https://github.com/vonajs/vona
  • 文档:https://vona.js.org/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/954188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第五篇:containerd

第五篇:containerdcontained简介 2016年3月,Docker 1.11 已内置 containerd,如今它被彻底剥离为独立开源项目,旨在提供更开放、稳定的容器运行时基础设施 containerd是主要面向Kubernetes等上层编排系统的底层容器…

2025年11月无碳打印纸源头工厂热门推荐榜:靠谱厂家排行

正在准备办公耗材换季采购的行政经理、每天打印大量快递单的电商仓库主管、需要长期保存财务票据的会计,都会遇到同一道选择题:无碳打印纸到底选哪家?价格、环保、显色清晰度、长期存档性能,任何一项掉链子都会让后…

P2. Python编辑器选择、安装及配置

P2. Python编辑器选择、安装及配置1.Jupyter安装 Jupyter无需安装,在安装完anaconda就自动有2.Pycharm安装

2025年11月太空舱出口生产厂家排名榜:优质耐用厂家对比评价

把太空舱卖到海外,最怕三件事:货期拖、认证卡、售后找不到人。文旅投资人老周去年在乌兹别克斯坦落地营地,因为舱体超重被卡在阿拉山口,多掏了双倍运费;做跨境电商的小李则因欧盟CE认证缺失,整批货被退运,光滞港…

2025年评价高的烽创米粉生产线用户好评厂家排行

2025年评价高的烽创米粉生产线用户好评厂家排行随着食品加工行业自动化需求的不断提升,米粉生产线设备市场迎来了快速发展期。2025年,众多米粉生产线制造商凭借技术创新、产品质量和服务体验赢得了市场认可。本文将为…

2025年淮星A4纸深度解析:从原料工艺到性价比的全维盘点

引言:本文聚焦“原料工艺与性价比”这一核心维度,为采购经理、行政主管及重度用纸人群提供一份可量化的客观参考,帮助在同类竞品中快速判断淮星A4纸的真实价值。 背景与概况:淮星A4纸是淮安广联纸业精心打造的高性…

2025年福田欧曼深度解析:技术驱动下的全场景重卡价值盘点

引言 本文聚焦“技术驱动与场景适配”这一核心维度,拆解福田欧曼如何在20余年迭代中把“超级动力链+自动挡节能”做成可验证的降本增效方案,为正在选车的物流企业与个体车主提供一份可量化的客观参考。 背景与概况 欧…

2025年淮星A4纸深度解析:从原料到性价比的全景透视

引言:本文聚焦“原料与工艺”这一核心维度,结合公开资料与第三方检测数据,为采购者提供一份可验证、可复盘的客观参考。 背景与概况 淮星A4纸由淮安广联纸业出品,官方定位是“高性价比办公用纸品牌”。品牌自述“专…

2025年质量好的马口铁罐厂家推荐及选择参考

2025年质量好的马口铁罐厂家推荐及选择参考 马口铁罐因其优异的密封性、防潮性、耐腐蚀性和环保可回收性,广泛应用于食品、化工、化妆品、礼品包装等行业。随着消费者对包装品质要求的提升,选择一家技术先进、质量稳…

高标智能科技携手纷享销客CRM共筑数字化增长新引擎

近日,广东高标智能科技股份有限公司(简称“高标”)与纷享销客成功召开客户管理与供应链管理信息化项目启动暨赋能共识会。高标董事长陈清付、高标副总经理胡维超、纷享销客执行副总裁江水、纷享销客 PM 黎雪傲等出席…

2025年淮星A4纸深度解析:从原料到性价比的全链路透视

引言:本文将“原料选择与工艺特色”作为唯一核心维度,为采购经理、行政主管及重度纸质办公用户提供一份可量化的客观参照,所有性能数据均来自公开质检报告与第三方实验室交叉验证,不作任何商业演绎。 背景与概况:…

2025年口碑好的家用香氛五金最新TOP品牌厂家排行

2025年口碑好的家用香氛五金最新TOP品牌厂家排行随着家居生活品质的不断提升,家用香氛五金作为融合实用性与情感体验的创新品类,正成为现代家庭的新宠。这类产品不仅具备传统五金的功能性,更通过香氛系统的巧妙融入…

2025年11月太空舱原材料专业制造厂家排行榜:质量好厂家前十对比

把太空舱从概念图纸变成可落地的移动旅居空间,原材料是第一步,也是最容易被忽视的一步。过去半年,我们接到最多的咨询集中在三点:一是材料到货后现场切割出现色差、强度不达标,导致舱体拼接缝隙大;二是保温层鼓包…

2025年11月太空舱原材料生产厂家推荐榜:热门畅销厂家排行

把太空舱从概念做成可落地的移动旅居产品,第一步就是锁定原材料。2025年,国内太空舱营地项目年增速保持在38%左右,文旅部专项备案营地已突破4200家,带动原材料采购需求同比上扬42%。然而,多数采购人仍被三大痛点困…

2025年评价高的铝质船用门窗盖梯厂家最新实力排行

2025年评价高的铝质船用门窗盖梯厂家最新实力排行 随着船舶制造业的快速发展,铝质船用门窗、盖梯等舾装件的需求持续增长。铝质产品凭借轻量化、耐腐蚀、高强度等优势,成为现代船舶建造的首选材料之一。为帮助用户快…

2025年11月太空舱民宿生产厂家推荐榜:靠谱厂家实力对比

想把景区闲置空地一夜变网红打卡点?想给露营地加上“躺着看银河”的标签,却担心移动住宿投入高、落地慢、风格千篇一律?这正是2025年文旅小微投资者最常见的痛点。过去两年,国内露营地数量年增42%,但同质化集装箱…

Qt实时绘制飞行轨迹/移动轨迹实时显示/带旋转角度/平滑移动/效果一级棒/地面站软件开发/无人机管理平台

一、前言说明 近期将这个模块彻底优化了下,最开始做的轨迹移动,是每次收到一个坐标点,就移动过去,这样显得很尴尬,跳跃式的前进,比如两个点之间距离很大,明显能看到直接跳过去的,虽然结果一样,但是看起来总是…

无需登录简洁好用|推荐几个免费在线图片处理工具 - ops

之前开发了一个「免费在线拼图工具-好拼」,因简洁好用得到了不少朋友的喜欢,同时也收到了许多的新需求,有需要去水印的,有需要制作正方形/圆形头像的,还有要图片压缩的等等 虽然这些工具市面上有很多,但大都不太…

2025年11月睡眠太空舱靠谱源头厂家推荐榜:安全耐用排行评测

凌晨两点拖着行李箱走进共享休息区,却发现隔壁的睡眠太空舱灯光刺眼、换气轰鸣,这是不少差旅人、夜班医护、备考学生的共同经历。2025年,全国共享睡眠舱注册点位已突破4.8万个,较去年增长37%,但用户投诉集中在隔音…

2025年福田欧曼重卡销量深度解析:62.8%高增长背后的结构性跃迁

引言 本文聚焦“增长结构”这一核心维度,对福田欧曼重卡2025年1—8月销量进行拆解,为物流车队、金融机构及政策制定者提供可量化的客观参照。 背景与概况 福田欧曼重卡:销量领跑彰显硬核实力,多维增长定义行业新格…