我现在有个只提供api接口的项目,没有使用cookie,相关的权限验证都是通过 post 参数验证的,现在有个地方要用到验证码,如果不使用 session cookie ,该如何实现呢?
我目前使用的是服务端生成验证码图片的时候,在服务端redis里存储该验证码,以用户端的ip做key,但是这样感觉如果在相同的局域网里的两台机器会共用该验证码,但是又没什么好办法解决。
在此请教大神看有什么好办法解决没有,多谢。
我现在有个只提供api接口的项目,没有使用cookie,相关的权限验证都是通过 post 参数验证的,现在有个地方要用到验证码,如果不使用 session cookie ,该如何实现呢?
我目前使用的是服务端生成验证码图片的时候,在服务端redis里存储该验证码,以用户端的ip做key,但是这样感觉如果在相同的局域网里的两台机器会共用该验证码,但是又没什么好办法解决。
在此请教大神看有什么好办法解决没有,多谢。
不使用 session cookie 的话,就自己生成一个唯一 ID,这里叫做 verifyId,把这个 verifyId 和验证码的答案保存在 redis中。
然后把这个 verifyId 与验证码图片一起返回,客户端在提交验证码时,必须要把这个 verifyId 和答案一起返回,后台通过 verifyId 获取 redis 中的答案做匹配。
当前别忘记要设置 verifyId 的超时时间。
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
服务端生成验证码图片的时候,你可以给他重定向一下,或者和csrf一样,给他一个唯一key,让他带着这个key过来。