问个laravel验证码的问题,我验证码识别不到,不知为什么?

我用的库是:mews/captcha
然后项目部署在我自己本地。

//获取验证码的方法
public function getImg(Request $request)
    {
        $img = app('captcha')->create('verify_four', true);
        $sid = 0;
        $data = ['img'=>$img['img'], 'sid'=>$sid];
        return $data;
    }
    //然后验证码库带的create方法
    public function create(string $config = 'default', bool $api = false)
{
  $this->backgrounds = $this->files->files(__DIR__ . '/../assets/backgrounds');
  $this->fonts = $this->files->files($this->fontsDirectory);

 if (version_compare(app()->version(), '5.5.0', '>=')) {
  $this->fonts = array_map(function ($file) {
  /* @var File $file */
  return $file->getPathName();
  }, $this->fonts);
  }

  $this->fonts = array_values($this->fonts); //reset fonts array index

  $this->configure($config);

  $generator = $this->generate();
  $this->text = $generator['value'];

  $this->canvas = $this->imageManager->canvas(
  $this->width,
  $this->height,
  $this->bgColor
  );

 if ($this->bgImage) {
  $this->image = $this->imageManager->make($this->background())->resize(
  $this->width,
  $this->height
  );
  $this->canvas->insert($this->image);
  } else {
  $this->image = $this->canvas;
  }

  if ($this->contrast != 0) {
  $this->image->contrast($this->contrast);
  }

  $this->text();

  $this->lines();

 if ($this->sharpen) {
  $this->image->sharpen($this->sharpen);
  }
  if ($this->invert) {
  $this->image->invert();
  }
  if ($this->blur) {
  $this->image->blur($this->blur);
  }

  if ($api) {
 Cache::put('captcha_record_' . $generator['key'], $generator['value'], $this->expire);
  }

  return $api ? [
  'sensitive' => $generator['sensitive'],
  'key' => $generator['key'],
  'img' => $this->image->encode('data-url')->encoded
  ] : $this->image->response('png', $this->quality);
}

再就是验证验证码的代码

function captcha_check(string $value): bool
    {
        return app('captcha')->check($value);
    }
    //验证码库的check方法
    public function check(string $value): bool
{
  if (!$this->session->has('captcha')) {
  echo 12344;
 return false;  }

  $key = $this->session->get('captcha.key');
  $sensitive = $this->session->get('captcha.sensitive');
  $encrypt = $this->session->get('captcha.encrypt');

 if (!$sensitive) {
  $value = $this->str->lower($value);
  }

  if($encrypt) $key = Crypt::decrypt($key);
  $check = $this->hasher->check($value, $key);
  // if verify pass,remove session
  if ($check) {
  $this->session->remove('captcha');
  }

  return $check;
}

会打印出12344,也就是说验证到我session里面没有这些东西,但是我都没登录哪里来的session这些东西。
所以问下大家为什么验证码识别失败?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 8
Mutoulee

识别不到是啥意思?输入任何正确的验证码都过不去??

1年前 评论
donggan (楼主) 1年前
Mutoulee (作者) 1年前
donggan (楼主) 1年前

请问有没有session和有没有登录有什么关系

1年前 评论
donggan (楼主) 1年前

只有 check 方法吗,这个不像 api 方式的验证

1年前 评论

看看cookie里面有没有sessionId

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!