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

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

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型号。在HPC高性能计算中还需要根据精度来选择,比如有的高性能计算需要双精度,这时如果使用P40或者P4就不合适,只能...

详解php内存管理机制与垃圾回收机制

目录一、内存管理机制二、垃圾回收机制一、内存管理机制先看一段代码:<?php//内存管理机制var_dump(memory_get_usage());//获取内存方法,加上true返回实际内存,...

laravel添加角色和模糊搜索功能的实现代码

一、添加角色 1.1 角色添加显示页面路由(get)// 角色添加页面显示Route::get('role/add', 'RoleControll...

美国高防服务器cn2线路速度怎么样

美国高防服务器cn2线路速度怎么样?由于美国高防服务器的网络连接方式和线路供应商可能不同,因此速度会有所不同。CN2线路是中国电信的高速通道之一,一般来说,使用CN2线路的美国高防服务器在连接中国大陆...

php实现ffmpeg处理视频的实践

最近有一个项目需要使用ffmpeg处理视频,这里我写了一个demo,方便我们来实现视频操作ffmpeg操作demo?123456789101112131415161718192021222324252...

如何查看新加坡gpu服务器硬盘信息的方法

查看GPU服务器硬盘信息:了解存储容量和性能的关键步骤,在使用GPU服务器时,了解硬盘信息是非常重要的。通过查看硬盘信息,您可以了解存储容量、硬盘类型、读写速度等信息,从而更好地了解服务器的存储性能和...