千家信息网

如何使用基于易水公共组件的验证码

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"如何使用基于易水公共组件的验证码",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用基于易水公共组件的验证码"吧!快速启动先引入相关依
千家信息网最后更新 2026年11月03日如何使用基于易水公共组件的验证码

本篇内容主要讲解"如何使用基于易水公共组件的验证码",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用基于易水公共组件的验证码"吧!

快速启动

  1. 先引入相关依赖

    com.yishuifengxiao.common    common-spring-boot-starter    4.1.2
  1. 将验证码工具注入到需要使用到验证码的地方

注入代码如下:

@Autowiredprivate CodeProcessorHolder codeProcessorHolder;

图形验证码

生成图形验证码

在注入一个验证码工具后,通过以下代码即可快速生成一个图形验证码。 具体的示例代码如下:

    @GetMapping("/code/image")    @ResponseBody    public Response image(HttpServletRequest request, HttpServletResponse response){        try {            codeProcessorHolder.findValidateCodeProcessor(CodeType.IMAGE).create(new ServletWebRequest(request,response));        } catch (ValidateException e) {            return Response.error(e.getMessage());        }       return Response.suc();    }

在以上代码后,用户即可通过

http://ip:port/code/image?image=唯一的随机值

获取图形验证码了。

在上述请求中,用户应该将image参数存储起来,因为在校验验证码时需要用到。

验证图形验证码

验证图形验证码的示例代码如下:

    @GetMapping("/image/validate")    @ResponseBody    public Response validate(HttpServletRequest request, HttpServletResponse response){        try {            codeProcessorHolder.findValidateCodeProcessor(CodeType.IMAGE).validate(new ServletWebRequest(request,response));        } catch (ValidateException e) {            return Response.error(e.getMessage());        }        return Response.suc();    }

用户在验证图形验证码时,即可用过

http://ip:port/image/validate?image=唯一的随机值&image_code=验证码内容

来判断验证码是否正确。

【注意】上述请求中image参数的值应该与请求中图形验证码的url中的image参数的值保持一致。

特殊提示:对于前后端部署在一起的单体应用,上述两个请求中的image参数都可以省略掉。

配置参数

除此之外,图形验证码相关的配置有

# 验证码的长度,默认为4yishuifengxiao.code.image.length=4# 验证码的失效时间,单位秒,默认为300syishuifengxiao.code.image.expireIn=300#  验证码是否包含字母,默认包含yishuifengxiao.code.image.isContainLetter=true# 验证码是否包含数字,默认包含yishuifengxiao.code.image.isContainNumber=true# 验证码的请求参数yishuifengxiao.code.image.codeKey=image# 验证码对应的值的参数yishuifengxiao.code.image.codeValue=image_code# 图形验证码的图形宽度yishuifengxiao.code.image.width=70# 图形验证码的图形高度yishuifengxiao.code.image.height=28

注意:

在生成验证码和验证验证码的请求中,请求参数中的image参数由yishuifengxiao.code.image.codeKey属性,image_code参数由yishuifengxiao.code.image.codeValue属性决定。在某些极端情况下,可以通过这两个配置修改请求参数。

如果服务是部署在阿里云ECS上面,由于阿里云默认关闭了25号端口,因此使用默认的端口发送邮件时会导致邮件验证码发送失败,因此需要提交工单到阿里云申请开启25号端口,或者使用465端口。

邮件验证码

在使用邮箱验证码时,需要先进行下述配置:

  1. 在项目中导入邮件发送相关的依赖

                                 org.springframework.boot                        spring-boot-starter-mail                
  1. 在项目的配置文件中加入邮件发送相关的配置属性

spring.mail.default-encoding=UTF-8spring.mail.host=邮箱服务器spring.mail.username=完整的邮箱地址spring.mail.password=密码spring.mail.port=465spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.connectiontimeout=5000spring.mail.properties.mail.smtp.timeout=3000spring.mail.properties.mail.smtp.writetimeout=5000spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactoryspring.mail.properties.mail.smtp.socketFactory.fallback=falsespring.mail.properties.mail.smtp.socketFactory.port=465spring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=true

如果不加入以上配置,在使用邮件验证码时会提示 【验证码处理器不存在】,且不能正确发送邮件验证码。

【注意】在阿里云ECS服务器上,25端口默认是关闭的,因此最好配置465端口

发送邮件验证码

邮件验证码的发送代码与图形验证码的发送方法基本一致,只需要将CodeType.IMAGE改成CodeType.EMAIL即可。

    @GetMapping("/code/email")    @ResponseBody    public Response email(HttpServletRequest request, HttpServletResponse response){        try {            codeProcessorHolder.findValidateCodeProcessor(CodeType.EMAIL).create(new ServletWebRequest(request,response));        } catch (ValidateException e) {            return Response.error(e.getMessage());        }        return Response.suc();    }

加入上述配置以后,即可通过

http://ip:port/code/email?email=目标邮箱地址

发送邮箱验证码了。

验证邮箱验证码

示例代码如下:

    @GetMapping("/email/validate")    @ResponseBody    public Response validate(HttpServletRequest request, HttpServletResponse response){        try {            codeProcessorHolder.findValidateCodeProcessor(CodeType.EMAIL).validate(new ServletWebRequest(request,response));        } catch (ValidateException e) {            return Response.error(e.getMessage());        }        return Response.suc();    }

加入上述配置以后,即可通过

http://ip:port/email/validate?email=目标邮箱地址&email_code=验证码

来验证了。

配置参数

除此之外,组件还提供了一些额外的配置

# 验证码的长度,默认为4yishuifengxiao.code.email.length=4# 验证码的失效时间,单位秒,默认为1800syishuifengxiao.code.email.expireIn=1800#  验证码是否包含字母,默认包含yishuifengxiao.code.email.isContainLetter=true# 验证码是否包含数字,默认包含yishuifengxiao.code.email.isContainNumber=true# 验证码的请求参数yishuifengxiao.code.email.codeKey=email# 验证码对应的值的参数yishuifengxiao.code.email.codeValue=email_code

类似地,验证码的请求参数中的email参数由yishuifengxiao.code.email.codeKey属性,email_code参数由yishuifengxiao.code.email.codeValue属性决定。

进阶配置

在邮件验证码功能中,组件对邮箱验证码做了一个缺省性实现,在用户对邮件验证码的格式有自定义需求时,可以通过在spring中注入一个名为emailCodeSender的实例来实现自己的模板内容。

示例代码如下

@Component("emailCodeSender")public class EmailCodeSender implements CodeSender {        @Override        public void  send(String target, EmailCode emailCode, CodeType codeType){        //实现自己的发送逻辑    }}

短信验证码

由于短信验证码的特殊性,不同的短信提供商有不同的发送接口,因此在使用短信验证码功能之前,需要完成自己的名为 smsCodeSender短信发送器,并将其注入到spring上下文之中。

示例代码如下

@Component("smsCodeSender")public class SmsCodeSender implements CodeSender {        @Override        public void  send(String target, EmailCode emailCode, CodeType codeType){        //实现自己的发送逻辑    }}

发送短信验证码

在完成前置配置之后,即可发送短信验证码了。

示例代码如下

    @GetMapping("/code/sms")    @ResponseBody    public Response sms(HttpServletRequest request, HttpServletResponse response){        try {            codeProcessorHolder.findValidateCodeProcessor(CodeType.SMS).create(new ServletWebRequest(request,response));        } catch (ValidateException e) {            return Response.error(e.getMessage());        }        return Response.suc();    }

加入上述配置以后,即可通过

http://ip:port/code/sms?phone=目标手机号

发送邮箱验证码了。

验证短信验证码

示例代码如下:

    @GetMapping("/sms/validate")    @ResponseBody    public Response validate(HttpServletRequest request, HttpServletResponse response){        try {            codeProcessorHolder.findValidateCodeProcessor(CodeType.SMS).validate(new ServletWebRequest(request,response));        } catch (ValidateException e) {            return Response.error(e.getMessage());        }        return Response.suc();    }

加入上述配置以后,即可通过

http://ip:port/sms/validate?phone=目标手机号&phone_code=验证码

来验证了。

参数配置

# 验证码的长度,默认为4yishuifengxiao.code.sms.length=4# 验证码的失效时间,单位秒,默认为300syishuifengxiao.code.sms.expireIn=300#  验证码是否包含字母,默认包含yishuifengxiao.code.sms.isContainLetter=true# 验证码是否包含数字,默认包含yishuifengxiao.code.sms.isContainNumber=true# 验证码的请求参数yishuifengxiao.code.sms.codeKey=phone# 验证码对应的值的参数yishuifengxiao.code.sms.codeValue=phone_code

类似地,验证码的请求参数中的phone参数由yishuifengxiao.code.sms.codeKey属性,phone_code参数由yishuifengxiao.code.sms.codeValue属性决定。

验证码的更多用法请参见一下资源

到此,相信大家对"如何使用基于易水公共组件的验证码"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

验证 参数 配置 图形 代码 邮件 邮箱 短信 属性 示例 端口 组件 内容 用户 目标 阿里 易水 单位 地址 字母 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 上海喔噻互联网科技有限公司 广州为想互联网科技有限公司 深圳恒合互联网络科技有限公司 北京互联网科技 互联网科技集团 南京欣网互联网科技 济南和联互联网科技有限公司 恒银科技与互联网金融 互联网科技项目计划书材料类 崇明区互联网教育科技诚信经营 徐州市互联网科技有限公司 保险科技服务互联网营销体系 银行科技岗属于互联网吗 启辰互联网科技 互联网相关科技技术 湖北辰鑫科技互联网 深圳互联网科技园地址 互联网金融金融科技 互联网科技大会大佬 华服互联网科技靠谱吗 互联网是第几次科技革命的成果 广州大一互联网络科技有限公司 互联网科技工作委员会副主任毛军 互联网 卓越科技 互联网金融科技平台 互联网科技博客 开一家科技互联网公司需要多少钱 烟台灵鸽互联网科技有限公司 科技互联网的核心竞争力
0