You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii2首页验证码图片不显示,直接访问controller/captcha链接可正常加载

问题根因

你页面上的验证码默认请求的是site/captcha接口,但你仅验证过tracking/captcha可以正常访问,大概率是site/captcha接口存在权限拦截或者配置问题,导致图片资源返回异常。

解决方案

方案1(更简单,直接使用Tracking控制器自带的验证码)

修改两处配置即可:

  1. 修改Tracking模型的验证规则,指定验证码动作指向当前控制器的captcha:
// app\models\Tracking
public function rules()
{
    return[
        ['verifyCode', 'captcha', 'captchaAction' => 'tracking/captcha']
    ];
}
  1. 视图渲染验证码部件时,显式指定验证码动作,避免默认走site控制器:
// 视图页面
<?= $form->field($model, 'verifyCode')->widget(Captcha::class, [
    'captchaAction' => 'tracking/captcha',
    'options' => [
        'placeholder' => 'Enter the letters above',
        'class' => 'form-control',
    ]
])->label('')?>

方案2(继续使用Site控制器的验证码)

需修复Site控制器的权限规则:AccessControl的规则是从上到下匹配,未登录用户访问site/captcha时,会先匹配第一条要求登录角色的规则,匹配失败才会走后面的访客规则,容易被父类控制器的自定义拦截逻辑影响,建议将公共可访问的captcha规则放在最前面,同时允许登录和未登录用户访问:

// frontend\controllers\SiteController
public function behaviors() { 
    return [
        'access' => [
            'class' => \yii\filters\AccessControl::className(),
            'rules' => [
                // 验证码规则放最优先
                [
                    'actions' => ['captcha'],
                    'allow' => true,
                    'roles' => ['?', '@'],
                ],
                [
                    'actions' => ['index', 'support', 'error', 'systemdoc', 'contact'],
                    'allow' => true,
                    'roles' => ['client1', 'client2', 'client3', 'client4', 'client5', 'client6', 'client7','api', 'clientmanager', 'clientmanager2', 'clientsupervisor', 'clientbeta','3pl4pl'],
                ],
                [
                    'actions' => ['api'],
                    'allow' => true,
                    'roles' => ['api'],
                ],
            ],
        ],
    ];
}

排查验证

修改后刷新页面,查看验证码img标签的src是否和你之前可正常访问的路径一致,直接复制src地址到浏览器地址栏访问,确认可以返回验证码图片即可。

补充:如果修改后仍然无法访问,可检查父类AccessController中是否有自定义的beforeAction权限拦截逻辑,将captcha动作加入拦截白名单即可。

内容的提问来源于stack exchange,提问作者Hunter Bertoson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:09:00