1,安装扩展
在Laravel中有很多图片验证码的库可以使用,我们使用:gregwar/captcha,这个库比较简单,在Laravel中比较常用
composer gregwar/captcha
2,获取图形验证码
这里我们使用的是base64给前端,前后端分离项目上这样比较方便
use Gregwar\Captcha\CaptchaBuilder;
/**
* 获取图形验证码
* @param Request $request
* @return mixed
*/
public function getCaptcha(Request $request){
$builder = new CaptchaBuilder();
$builder->build();
$captcha = $builder->inline(); //输出base64格式图片
$code = $builder->getPhrase(); //验证码
session()->put('phrase',$code);
if(config('app.debug')){//调试模式输出正确明文给前端
return $this->resultData('$_0',compact('captcha','code'));
}else{
return $this->resultData('$_0',compact('captcha'));
}
}
通过路由访问此接口,即可获取到base64类型的验证码
3,验证图形验证码
在需要使用图形验证码的方法里验证
//验证图形码
if(!$code){
throw new ApiException("验证码不能为空");
}
$phrase = session('phrase'); //获取session内的验证码
if(!$phrase||$code!=$phrase){
session()->forget('phrase'); //删除session验证码
throw new ApiException("验证码错误");
}