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>
注意:刷新验证码的地址也改过来。