图片验证码(遇到集群session验证失败的解决方法)

前两天新项目,做了一个关于图片验证码的功能,其实思路什么很简单,就是直接调用接口,给前端输出图片流。在输出流的时候,把验证码给存到session中去,然后验证的时候,在从session中取值。从而进行验证验证码是否正确。如果是单一的服务器的话是没问题的,但是遇到了集群的话,可能就会出错了。因为一个域名是随机面对的一个服务器的ip,然后你进行图片验证的时候,每次ajax进行的请求,服务器会认为是新的一次请求(前后端分离也是这个问题),然后新的一次请求,取到的验证码肯定就不对了,下面说一下解决方法。

解决方法:

  将验证码存入到redis中去,然后key值就是uuid,value值就是code值,然后每次前台调用图片验证码接口的时候,会返回一个uuid,和一个将图片流base64编码的字符串。然后每次前台验证的时候,需要给我传这个uuid,然后我在进行通过取uuid的value值进行验证。其实这个解决方法的关键就是将原先的图片流换成了base64编码。

然后下面则写一下两种图片验证的方式代码。

一、传统的方法,直接给前台输出图片流,然后将code值存入session中(单一服务器可行,集群情况下会出错)

二、将code值直接存到一个以uuid为key的redis中去,同时给前端返回的验证码图片是一个base64编码的字符串。

前端的图片显示需要这种格式:<img src = "data:image/jpeg;base64,这里加上你的base64码" alt="">

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值