问个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这些东西。
所以问下大家为什么验证码识别失败?
识别不到是啥意思?输入任何正确的验证码都过不去??
请问有没有session和有没有登录有什么关系
只有 check 方法吗,这个不像 api 方式的验证
看看cookie里面有没有sessionId