2025/12/27 7:36:53
网站建设
项目流程
nodejs适合网站开发,大学网站开发的流程图,wordpress文章分页共多少页,网站开发需求描述验证码体系VonaJS的内置模块a-captcha提供了通用的验证码体系#xff0c;使用Captcha Provider支持各种验证码方式#xff0c;并且使用Captcha Scene支持不同场景的验证码使用策略特性Captcha Provider#xff1a;使用Captcha Provider支持各种验证码方式#xff0c;如使用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 captchaconst captcha await this.bean.captcha.create(a-captchasimple:simple);返回值类型ICaptchaDataexport interface ICaptchaData {id: string;provider: keyof ICaptchaProviderRecord;token?: unknown;payload: unknown;}名称 说明id 本次验证码数据的id标识provider 本次验证码所使用的Provider名称token 本次验证码数据的token用于比对用户输入值。在开发环境可以通过修改系统配置将token发往前端用于调试payload 本次验证码的负载内容不同的Provider有不同的payload类型2. refresh// refresh captchaconst captchaNew await this.bean.captcha.refresh(captchaId, a-captchasimple:simple);如果一个 Scene 配置了多个 Provider那么在刷新 capthca 时可以基于策略选取不同的 Provider3. verify// verify captchaconst passed await this.bean.captcha.verify(captchaId, 1234, a-captchasimple:simple);4. verifyImmediate前端可以对用户输入的验证码进行立即验证。立即验证之后在提交表单时仍然要进行二次验证// verifyImmediate captchaconst 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.tsimport { 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名称 说明createrefreshverifyImmediate为何没有提供verifyAPI因为bean.captcha.verify方法用于局部拦截器a-captcha:captchaVerify参数配置可以在 App Config 中修改模块a-captcha的参数配置src/backend/config/config/config.ts// modulesconfig.modules {a-captcha: {captcha: {showToken: false,},captchaProvider: {ttl: 20 * 60 * 1000,ttlSecondary: 20 * 60 * 1000,},},};名称 说明captcha.showToken 是否显示token。如果为true就将token发往前端用于调试。默认为falsecaptchaProvider.ttl captcha token的过期时间captchaProvider.ttlSecondary 二次token的过期时间