1、创建一个controller

class ImgController extends Controller
{
    public function actions()
    {
        return [
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'maxLength' => 4,
                'minLength' => 4,
            ],
        ];
    }
}

这样就可以通过xxx.com/img/captcha  访问验证码


2、验证码验证

创建一个from Model 


class LoginForm extends Model
{
    public string $username;
    public string $password;
    public string $captcha;
    public function rules()
    {
        return [
            ['username', 'required', 'message' => '请输入用户名'],
            ['password', 'required', 'message' => '请输入密码'],
            ['captcha', 'captcha', "captchaAction" => "/public/img/captcha", 'message' => "验证码错误"],

        ];
    }
    public function attributeLabels()
    {
        return [
            'id' => 'id',
            'username' => 'username',
            'password' => 'Password'
        ];
    }
}


注意:captchaAction 是刚才验证码生成的方法


3、controller 验证

$adminService = new AdminService();
$loginForm = new LoginForm();
$data = Yii::$app->request->post("data");
$temp = $loginForm->load(["LoginForm" => $data]);
if (!$loginForm->validate()) {
    $temp = $loginForm->getErrors();
    $temp = array_values($temp);
    return json_encode(["code" => 201, "msg" => array_values($loginForm->getErrors())[0][0]]);
}