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

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

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图形验证码内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

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

相关文章

东莞高防服务器租用应该怎么选择

东莞高防服务器租用应该怎么选择?选择东莞高防服务器租用时,以下几个因素需要考虑:防护能力:高防服务器主要是为了防止各种网络攻击,包括DDoS攻击、CC攻击、UDP攻击等等。因此,在选择时需要注意服务器...

租用美国高防服务器需要考虑哪些因素

选择租用美国高防服务器时,需要考虑以下几个因素:1.防御能力:高防服务器的主要目的是提供强大的防御能力,能够对DDoS等攻击方式进行有效防范。因此,在选择高防服务器时,需要考虑其防御能力是否足够强大,...

哪些领域需要搭建GPU服务器呢泉州GPU服务器可以搭建什么应用

GPU是相对于CPU的一个概念,也就是图形处理器,由于在现代的计算机中(特别是家用系统,游戏的发烧友)图形的处理变得越来越重要,需要一个专门的图形的核心处理器。简单的说GPU=显卡的“CPU”,CPU...

Laravel统一封装接口返回状态实例讲解

前后端分离,接口返回封装方便你我他(方便前后端合作开发)在Laravel中可以在公共继承的Controller.php写方法进行调用返回app/Http/Controllers/Controller....

租用泉州高防服务器时应该注意的问题

租用泉州高防服务器时应该注意的问题?在租用泉州高防服务器时,以下是一些应该注意的问题:选择合适的服务器规格:不同规格的高防服务器价格和性能都有所不同。您应该根据自己的需求选择合适的服务器规格。选择可靠...

php中大厂的面试题整理

找工作遇到各种各样的面试已经屡见不鲜了,虽然出的内容是五花八门,但是基本上所有面试题还是基于最核心的思想,就是一些最基础的内容使用,只有根基深厚了,才可以在往上助苗成长,本章的核心内容,就是大家最关切...