Laravel8 使用图形验证码做登录功能的实现

admin3年前PHP教程25
一、 安装扩展包

composer require gregwar/captcha

二、定义路由

//路由分组Route::group(["prefix"=>"admin","namespace"=>"Admin"],function (){//登录显示 name给路由起一个别名Route::get("login","LoginController@index")->name("admin.login");//登录方法 name给路由起一个别名Route::post("login","LoginController@login")->name("admin.login");//定义图形验证码路由Route::get("img_code","CommonController@imgCode")->name("admin.img_code");});
三、 生成图形验证码类

<?phpnamespace AppHttpControllersAdmin;use AppHttpControllersController;use CarbonCarbon;use GregwarCaptchaCaptchaBuilder;use GregwarCaptchaPhraseBuilder;class CommonController extends Controller{//验证码public function imgCode(){$phrase = new PhraseBuilder;// 设置验证码位数$code = $phrase->build(4);// 生成验证码图片的Builder对象,配置相应属性$builder = new CaptchaBuilder($code, $phrase);// 设置背景颜色25,25,112$builder->setBackgroundColor(34, 0, 45);// 设置倾斜角度$builder->setMaxAngle(25);// 设置验证码后面最大行数$builder->setMaxBehindLines(10);// 设置验证码前面最大行数$builder->setMaxFrontLines(10);// 设置验证码颜色$builder->setTextColor(230, 81, 175);// 可以设置图片宽高及字体$builder->build($width = 150, $height = 40, $font = null);// 获取验证码的内容$phrase = $builder->getPhrase();// 把内容存入 cache,10分钟后过期$client_id = md5( rand(1,1000).time());Cache::put($client_id, $phrase, Carbon::now()->addMinutes(10));// 组装接口数据$data = ["client" => $client_id,"captcha" => $builder->inline(),];return $data;}}![image.png](p9-juejin.byteimg/tos-cn-i-k3u1fbpfcp/8034e8b8f6ac4f0abe121f296591e3bd~tplv-k3u1fbpfcp-watermark.image)
四、接口调用

<script>//页面加载完毕事件$(function(){getCaptCha();});//获取图形验证码的方法var getCaptCha = function (){$.ajax({url:"{{route("admin.img_code")}}",success(res){$("#client").val(res.client);$("#img_code").attr("src",res.captcha);}})}</script>
五、页面展现

<input type="hidden" id="client" name="client" >

<div class="row cl"><div class="formControls col-xs-8 col-xs-offset-3"><input name="captcha" class="input-text size-L" type="text" placeholder="验证码" onblur="if(this.value==""){this.value="验证码:"}" onclick="if(this.value=="验证码:"){this.value="";}" value="" style="width:150px;"><img id="img_code" src="" onclick="getCaptCha()"> <a id="kanbuq" onclick="getCaptCha()" href="javascript:;" rel="external nofollow" >看不清,换一张</a> </div></div>

前台页面实现效果:

六、后台登录接口进行校验验证码是否正确

//登录方法public function login(Request $request){//接收所有参数$params = $request->all();//取出验证码是否一致$captcha = Cache::get($params["client"]);if ($params["captcha"] != $captcha){return redirect(route("admin.login"))->withErrors(["error" => "验证码错误"]);}}

到此这篇关于Laravel8 使用图形验证码做登录的文章就介绍到这了,更多相关Laravel图形验证码内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

GPU显卡服务器的选择从那几个方面考虑了新加坡显卡服务器如何选择合适的

GPU服务器(GPUCloudComputing,简称GPU)是基于GPU应用的计算服务,具有实时高速的并行计算和浮点计算能力,一般适用于3D图形应用程序、视频解码、深度学习、科学计算等应用场景。用途...

江苏高防服务器的性能特点

江苏高防服务器的性能特点?江苏高防服务器是指具有高防御性能的服务器,通常可提供针对各种网络攻击的有效保护。具体而言,江苏高防服务器的性能特点可能包括:1.高性能处理器和大内存:江苏高防服务器通常采用高...

租用gpu服务器要自己配置环境吗香港gpu服务器租用多少钱一年

租用GPU服务器的注意事项:1.选择GPU服务器时要看服务商提供的机房规模,选择口碑、服务都比较好的专业机房,机房可靠,服务器性能稳定。2.租用GPU服务器时建议选择具有大带宽接入,选择端口限制比较少...

php两种基本的输出方法及实例详解

在 PHP 中,有两种基本的输出方法:echo 和 print。echo 和 print 之间的差异echo - 输出一个或多个字符串,可以接受多个参数并且没有返回值print - 只能输出一个字符串...

高防服务器单线和双线有哪些区别?国内高防大带宽服务器如何选择合适的?

公司发展从小做大,必然会经历从传统线下业务发展模式,发展到线上网络布署的阶段。建设公司门户网站、形象宣传平台、业务平台,也成为中小型公司需要面临的问题。作为专精的公司IT布署管家,在此为大家普及一些网...

PHP中的异常及其处理机制

目录什么是异常?总结上回文章中我们讲到了错误是编译和语法运行时会出现的,它们与逻辑无关,是程序员在码代码时不应该出现的,也就是说,这些错误应该是尽量避免带到线上环境的,他们不能通过try...catc...