UUID和验证码的关系

UUID的组成和生成

我们先了解一下UUID的结构和怎么生成的。
UUID是唯一标识的字符串,下面是百度百科关于UUID的定义:

UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为1632=2128,约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。
UUID的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的32个字符。示例:

550e8400-e29b-41d4-a716-446655440000

UUID亦可刻意重复以表示同类。例如说微软的COM中,所有组件皆必须实现出IUnknown接口,方法是产生一个代表IUnknown的UUID。无论是程序试图访问组件中的IUnknown接口,或是实现IUnknown接口的组件,只要IUnknown一被使用,皆会被参考至同一个ID:00000000-0000-0000-C000-000000000046
以上就是UUID的定义。

UUID可以在前端生成,也可以在后端生成

下面是前端生成的UUID,后端也是差不多的样子,这里就不贴出来。

up-dab7b62a80e356eed2adc94fc9b96edb567.png

大致就是这么生成的,算法网上有很多可以直接搜索。

UUID和验证码是什么关系,验证码校验又是怎么实现的?

接下来才是正题,说一下UUID和验证码是什么关系,验证码校验又是怎么实现的?
当我们点击验证码框的时候

up-575c822b3cfbdf5bd797367d40a35749156.png

点击这个框,前端会生成一个UUID(这里是前端生成UUID的情况),
并且把这个UUID发送给后端,然后后端得到这个UUID后,后端自己再通过算法随机生成5位验证码字符串(比如上图的4xb22,这时候只是一串字符串)(如果UUID不是前端生成的,后端这时候也一起生成UUID)。
然后后端将这个字符串验证码和得到的UUID进行绑定(也就是说有这个UUID就能得到验证码字符串,可以理解是 key: “UUID”,value: “验证码字符串”)。
然后后端再通过其他算法(某个图像生成API,这个我不懂)将这个验证码字符串渲染成验证码图片。这时候,把这个图片发送给前端,后端保留了UUID和验证码字符串。

我们回到前端,当前端得到后端给的验证码图片后,显示在验证码该显示的地方。
然后用户开始输入验证码,当用户点击登录的时候,又发一次请求给后端,这个请求带有账号密码等信息,最重要的是,它还将UUID,和用户输入的验证码传给了后端。
然后后端拿到这些信息(UUID,验证码)后,就把这个UUID拿去查询它对应的字符串(K,V),将这个后端保存的验证码和前端发送来的验证码进行对比,如果对了,就验证成功,如果错了,就验证失败。

然后把结果发送给前端。前端在进行下一步处理。
这就是为什么,后端能明白是你的验证码是对还是错。
大致过程就是这样,有什么遗漏或不对的欢迎大家评论区指出。

Guess you like

Origin blog.csdn.net/qq_25231683/article/details/120017023