Thinphp6 官方的验证码模块的配置是有问题的,或者说需要手工配置。
在配置期间,我尝试了多种(包括按照官方文档、路由等)方法都验证失败。
存在2个问题:
1、多应用模式下,验证码的配置文件依然读取全局的配置;
2、多应用模式下,无法完成验证码的验证(captcha_check($captcha))。
解决办法(假设多应用名称为admin):
1、安装过程略;
2、开启本应用的Session(默认是关闭的)
文件:app/admin/middleware.php
<?php
// 全局中间件定义文件
return [// 全局请求缓存
// \think\middleware\CheckRequestCache::class,// 多语言加载// \think\middleware\LoadLangPack::class,// Session初始化\think\middleware\SessionInit::class
];
3、新建控制器Captcha
文件:app/admin/controller/Captcha.php
<?php
/*** End file Captcha.php*/namespace app\admin\controller;use app\BaseController;
use think\captcha\facade\Captcha as captchaMain;class Captcha extends BaseController
{public function verify(){return captchaMain::create('admin');}
}
4、复制配置文件到本应用根目录
文件:app/admin/config/captcha.php
原文件:app/config/captcha.php
5、模板文件使用
<div class="captcha"><img src="/admin/captcha" alt="captcha" onclick="this.src='/admin/captcha?'+Math.random();" />
</div>
注意:刷新验证码的地址也改过来。