采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
目前能想到的原因,应该是调用扩展 tp-captcha 中的 CaptchaController 生成验证码图片时,未开启 session,导致 验证key 未写入到 session,所以在 admin 模块下使用 captcha_check() 一直未 false, 输出 session 中 captcha 也为空
一、放入admin 不生效的原因:
1、定位到加载中间件中的代码,在 think\Middlewar 中有一个 import 导入中间件,这里是注册中间件的位置。
2、经过的我的查找,两处地方是加载了中间件:
2.1 在 think\Http 下有一个 loadMiddleware (加载全局中间件),经过测试,这个方法加载了
app\middleware.php文件,如图
2.2 在 think\app\MultiApp 多应用模式 中有一个 loadApp 方法记载了模块的中间件,
如果 是admin模块下有 middleware.php 那么就会加载,如图
如图,是加载中间件的顺序
到这里也就知道了为什么放入 admin 模块下不生效,因为验证码的地址是 /captcha 访问,那么就加载不到admin 模块下的中间件 的 SessionInit ,也就开启不了session,如图
二、解决办法:
经过上述的验证,需要把验证码的路径修改为 /admin/captcha 就可以成功,如图实现
是这么个分析流程,重写个验证码获取就行了
赞赞赞
赞。回复的很棒
请问verder下面的helper修改合适吗,如果要在自己的文件夹目录下,比如admin下扩展helper,应该怎么做
请问,我按这个方法设置后,验证码图片显示不出了,如图
在创建验证码的时候,是可以从session里面取到key的值的,但是去检测验证码是否正确的时候就获取不到了,我在想,是不是因为作用域的问题。而且我关闭全局中间件和admin目录下的中间件 中的{\think\middleware\SessionInit::class},依旧可以从session获取到key,有点蒙
未写入到文件,取值时不是从文件中获取的,而是从内存中返回的
可以看下 think\session 下 Store 中 set() 和 get()的实现
登录后可查看更多问答,登录/注册
一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目
1.8k 19
1.4k 19
4.6k 16
1.6k 16
1.4k 16