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

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

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服务器时,了解其配置和报价是非常重要的。以下是一些关于如何看GPU服务器配置和报价的建议:GPU类型和数量:首先需要了解GPU服务器所配备的GPU型号和数量。不同型号和数量的GPU有着不同...

Laravel中的where高级使用方法实例讲解

有时候项目中需要进行多个字段搜索就可以用到此方法在Laravel中的可以同时使用多个where,所以我们可以每个字段分配一个where()然后在每个where()中去闭包判断$username = &...

laravel csrf验证总结

laravel csrf验证总结前言问题:laravel 在web路由下无论是表单提交啊 还是ajax请求啊 只要是请求方式不满足 ['HEAD', 'GET', &#...

如何动态查看及加载PHP扩展

目录查看是否已经加载了扩展动态加载扩展测试代码:在编译并完成 php.ini 的配置之后,我们就成功的安装了一个 PHP 的扩展。不过, PHP 也为我们提供了两个在动态运行期间可以查看扩展状态以及加...

PHP之mysql位运算案例讲解

位运算,赋值状态时异或对应位数1的整形,判断状态则与运算对应位数1的整形。最大用处就是同时判断32位状态,节省存储空间,便于扩展, 如果你不知道什么是位运算的话, 那么请你先去看看基础的C语...

台湾物理服务器配置推荐怎么选择

台湾物理服务器配置推荐怎么选择?选择台湾服务器的物理配置需要根据你的实际需求和预算来决定。以下是一些推荐的配置:处理器:双路IntelXeonE5或更高级别的处理器,可以提供更高的性能和稳定性。内存:...