关于admin应用下开启session,不生效问题!
来源:6-8 ajax登录-基本参数校验(普通方式校验)
帅气的狗头
2019-12-29
目前能想到的原因,应该是调用扩展 tp-captcha 中的 CaptchaController 生成验证码图片时,未开启 session,导致 验证key 未写入到 session,所以在 admin 模块下使用 captcha_check() 一直未 false, 输出 session 中 captcha 也为空
4回答
-
一、放入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 就可以成功,如图实现
1662020-02-20 -
李大侠1984
2020-07-11
请问verder下面的helper修改合适吗,如果要在自己的文件夹目录下,比如admin下扩展helper,应该怎么做
00 -
宠客
2020-02-26
请问,我按这个方法设置后,验证码图片显示不出了,如图
00 -
活着smile
2019-12-29
在创建验证码的时候,是可以从session里面取到key的值的,但是去检测验证码是否正确的时候就获取不到了,我在想,是不是因为作用域的问题。而且我关闭全局中间件和admin目录下的中间件 中的{\think\middleware\SessionInit::class},依旧可以从session获取到key,有点蒙
022019-12-29
相似问题