dustlight-cn / captcha

CAPTCHA 是一个基于 Spring Boot 框架的验证码框架,它通过 AOP 的方式完成包含验证码生成、发送、存储等验证码相关业务,以避免与业务代码耦合。目前提供邮箱验证码、短信验证码、图像验证码、谷歌 reCAPTCHA。
https://dustlight-cn.github.io/captcha/
Apache License 2.0
30 stars 6 forks source link

使用post请求,验证一直出错。。。 #4

Closed momocstar closed 3 years ago

Hansin1997 commented 3 years ago

请问用的是哪个模块?

momocstar commented 3 years ago

图片验证码 使用redis存储或默认存储,都没办法消费验证码。

Hansin1997 commented 3 years ago

方便看一下调试信息吗?

能够生产图片对吗?

momocstar commented 3 years ago

是的,图片正常产生。切换到get请求。才能成功消费验证码。

Hansin1997 commented 3 years ago

应该是由于 Post 请求将验证码参数以 RequestBody 的形式传入,导致无法将值传入到方法参数中。 可以尝试将验证码的值单独放进请求路径中,例如 curl -X POST http://localhost/create?code=abc -d "k=v"

计划下个版本支持将验证码参数注入到 @RequstBody 中,感谢您的反馈。

请问还有什么能够帮到你吗?

momocstar commented 3 years ago

多谢解答。。

Hansin1997 commented 3 years ago

不客气~感谢关注⭐

momocstar commented 3 years ago

使用redis存储验证码,在debug模式下还是走了Session验证 验证码模式。 image image

Hansin1997 commented 3 years ago

配置文件有进行配置吗?可以参考下面配置:

# 配置 CAPTCHA
dustlight:
  captcha:
    default:
      store:
        name: "redisCodeStore" # 设置默认验证码存储器(Bean名称

或者配置 application.properties:

# 配置 CAPTCHA
dustlight.captcha.default.store.name=redisCodeStore
momocstar commented 3 years ago

image 这是错误的配置是吗?

momocstar commented 3 years ago

已经解决了,我的配置问题。。

Hansin1997 commented 3 years ago

我刚想给你发一份 Demo 😄

momocstar commented 3 years ago

经过debug查看,使用post方式请求的时候,走的是HttpSession load方法校验,,我已经配置了redis这些配置啥的。

Hansin1997 commented 3 years ago

先检查一下 Redis 数据库有没有验证码被存进去,或者消费完毕后是否被删除。

RedisCodeStore 仅仅是存储和取出验证码的时候使用了 Redis,但是判断当前用户还是通过 sessionId 判断,所以我不确定你的情况是 RedisCodeStore 完全没生效,还是说只是发现了有 HttpSession 的迹象。

Hansin1997 commented 3 years ago

如果解决不了,可以与我邮箱联系:hansin@dustlight.cn

Hansin1997 commented 3 years ago

POST 传参无效问题已解决

现在参数注入已支持对象字段注入,详情请查看:#5

请将依赖升级至 0.0.7 版本。如:

<dependency>
    <groupId>cn.dustlight.captcha</groupId>
    <artifactId>captcha-core</artifactId>
    <version>0.0.7</version>
</dependency>

另外,请问 Redis 存储的问题解决了吗?

momocstar commented 3 years ago

简单看了一下源码,已经解决了