如上图所示,我奉命要开发这样一个组件,如果是仅用前端的话,倒是没什么难度。可问题来了,还需要后端的校验。
所以,我就有了2个问题:
- 验证码展现的方式,是后端把文字随机放上去后生成一张图片发到前端,然后前端展现,点击后返回坐标数据验证呢?还是,后端把随机坐标和文字发到前端,前端通过canvas生成图片,点击后返回坐标给后端进行验证呢?
- 如果是前者,在nodejs中,怎么储存之前生成的图片随机文字的坐标信息?
如上图所示,我奉命要开发这样一个组件,如果是仅用前端的话,倒是没什么难度。可问题来了,还需要后端的校验。
所以,我就有了2个问题:
当然是后端出图、后端验证啊。
这个东西的作用就是人机验证,防机器人的;如果你把验证区域的坐标在 HTTP 报文里来回传,机器人完全可以抓你的 HTTP 报文、直接就取出坐标了。那你这除了给正常用户造成麻烦以外,完全没起到防机器人的作用啊。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
第1种方法很简单,但是,要考虑加密传到前端的验证信息。
第2种只需要往前端传图片即可,nodejs有插件可以临时保存数据的,等到验证的时候记住清除就行了。不过,如果要从nodejs生成图片并传图片到前端,难点在于,生成图片这里。
能供nodejs自己画图的插件并不多,其实就是可以在nodejs上使用canvas罢了,配环境是最麻烦的!如果可以,直接找一个可以生成图片的插件好了,别自己画了,累。