程序员冈刀,目前就职于阿里,java开发工程师,研究生。2022年,毕业于北京邮电大学电子工程学院、电子与通信工程专业。个人公众号《代码废柴》欢迎关注。


大家好,我是默默无闻的程序猿,后端开发工程师,距离上一次写文章已经是上一次了。本次想分享的是网站验证码的核心设计与实现。那么,一起来看一下是如何实现设计的吧~!

验证码,主要的功能是验证当前操作的对象是机器还是人,从而避免一些无效的网站请求。同时,也针对关键的功能加以保护,防止非法的请求。在这里介绍一些自己写的组件,验证码的能力已经集成完毕,直接使用即可!

第一步:在pom.xml引入以下内容

<!-- https://mvnrepository.com/artifact/vip.breakpoint/easy-access-authority -->
<dependency>
    <groupId>vip.breakpoint</groupId>
    <artifactId>easy-access-authority</artifactId>
    <version>XXXXX</version>
</dependency>

第二步:在需要验证的接口位置加上如下注解

@AccessLimit(isLogIn = false, isVerifyCode = true)
@GetMapping("/get")
public Object get() {
    return "hello word";
}

AccessLimit注解是我们自定义的注解,其中,isVerifyCode是开启这个接口的验证码能力。简单地说,如果想要访问这个接口,需要请求方传递验证码信息才可以请求到真正的业务逻辑。

第三步:获取验证码图片

获取验证码的图片,是有一个专门的接口,专门获取验证码信息,接口如地址下:
浏览器地址栏输入地址: /easy-verify-code/getVerifyCode

Your网站接入验证码接入方案_后端

验证码的内容

Your网站接入验证码接入方案_后端_02

第四步:请求接口加上验证码

Your网站接入验证码接入方案_后端_03

请求自己定义的接口,增加verifyCodeKey、verifyCode两个参数,分别表示验证码的信息。 /get?verifyCodeKey=d1bfffa1-d2da-40d6-9f24-492032ac7e24&verifyCode=hpmh

verifyCodeKey 表示请求验证码的token

verifyCode 表示验证码的内容,验证码内容忽略大小写字符

如果传递验证码不正确或者其他的,接口无法访问,会返回操作失败的信息。下面是一个返回失败信息的例子:

Your网站接入验证码接入方案_架构_04

另外,这个验证码的工具还提供其他的配置,如下所示:

# 验证码缓存大小
verify.code.cache.size=1000
# 验证码的长度
verify.code.length=4
# 验证码待选的内容 当前仅支持英语 ,汉语会带来乱码
verify.code.content=
# 验证码的失效时间 单位ms
verify.code.timeout=180000
# 请求后是否清除当前验证码信息,每次使用后,第二次不能使用 默认是不清除
verify.code.clear=false

后序
至此,整个的验证码的功能接入完毕,是不是很简单,很方便!不需要特别的关注验证码,想要验证,加上注解配置即可!更多的内容可以访问组件地址:zhaoligang.gitee.io/easy-tools-…


程序员冈刀,目前就职于阿里,java开发工程师,研究生。2022年,毕业于北京邮电大学电子工程学院、电子与通信工程专业。个人公众号《代码废柴》欢迎关注。

Your网站接入验证码接入方案_Java_05