当前位置: 首页 > news >正文

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

验证码体系

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.zskr.cn/news/38248.html

相关文章:

  • 2025年11月太空舱出口生产厂家排名榜:优质耐用厂家对比评价
  • P2. Python编辑器选择、安装及配置
  • 2025年评价高的烽创米粉生产线用户好评厂家排行
  • 2025年淮星A4纸深度解析:从原料到性价比的全链路透视
  • 2025年11月太空舱原材料生产厂家推荐榜:热门畅销厂家排行
  • 2025年11月太空舱民宿生产厂家推荐榜:靠谱厂家实力对比
  • 2025年11月旋弧焊机热门厂家排行榜:专业实力与口碑评价对比评测榜
  • 维特比算法
  • 2025年靠谱的杭州别墅大宅装修用户好评榜
  • 2025年比较好的橡胶辊铁辊厂家推荐及选择指南
  • 2025年比较好的上料搅拌车厂家最新TOP实力排行
  • 2025年广东台球用品企业排名推荐:深圳皇爵体育用品有限公司
  • 2025年湖南grc装饰线条定做厂家哪家好?grc线条构件生产商哪家好?
  • 2025年热门的冷拔无缝钢管厂家推荐及选购指南
  • 分布式光伏发电定制公司排名,专业光伏发电工程公司及源头公司推荐
  • 2025 年冲天炼铅炉厂家最新推荐榜,技术实力与市场口碑深度解析,聚焦优质设备核心优势无烟/新型炼铅炉厂家盘点
  • 2025年11月摩擦焊机制造厂家推荐榜单:正规专业排行评测
  • 2025年度停车棚优质生产商排行榜,值得推荐的停车棚供应商
  • 2025年口碑好的小角度缓冲铰链实力厂家TOP推荐榜
  • 2025年比较好的变频控制柜厂家推荐及选择参考
  • 2025年耐用的户外太空舱厂家最新热销排行
  • 2025年11月无碳打印纸源头厂家排名:环保耐用靠谱选哪家权威榜单
  • 2025年11月无碳打印纸制造厂家推荐榜单:淮星安全诚信厂家排名前五
  • 2025 年电缆厂家最新推荐排行榜:涵盖进口与国产优质品牌,助力企业精准选购电缆产品和柔/General cable 电缆公司推荐
  • 2025年质量好的粉末冶金优质厂家推荐榜单
  • 2025年知名的双功能缓冲滑轨实力厂家TOP推荐榜
  • 2025年质量好的耐高温PET片优质厂家推荐榜单
  • 2025年热门的高强度镀锌轻钢龙骨厂家推荐及选择参考
  • 2025年靠谱的陕西废气处理厂家推荐及采购指南
  • 2025年11月太空舱出口制造厂家推荐榜单:专业权威排行选出靠谱工厂