Laravel5.8 - 验证码(captcha)安装及验证

image.png

 

首先,登录网址 packagist.org 查找 laravel captcha,找到mews/captcha ,根据 packagist 上的使用方法一步步来实现验证码的安装。

 

composer 安装:composer require mews/captcha

 

image.png

 

注册providers (config/app.php) ,在这个数组中的最后追加如下代码:

Mews\Captcha\CaptchaServiceProvider::class,

注册aliases (config/app.php),在这个数组中的最后追加如下代码:

'Captcha' => Mews\Captcha\Facades\Captcha::class,

生成配置文件,在 Composer 命令行中输入如下命令:

php artisan vendor:publish

 

image.png

 

进入config/captcha.php 文件,修改default 数组 可以对验证码进行样式、数量、大小上的修改。

 

image.png

 

页面中使用:

<img src="{{captcha_src()}}" style="cursor: pointer" οnclick="this.src='{{captcha_src()}}'+Math.random()" style="width: 50%; float: right">

@if ($errors->any())
    <div class="alert">
        @foreach ($errors->all() as $error)
            {{ $error }}
        @endforeach
    </div>
@endif

 

方法中验证验证码;

<?php
 public function dologin(Request $request){
        $validatedData = $request->validate([
            'captcha' => 'required|captcha',
        ],[
            'captcha.required' => '验证码不能为空',
            'captcha.captcha' => '验证码错误',
        ]);
 }
 ?>

 

注:若出现composer无法安装验证码,可以参考这篇文章https://www.tpxhm.com/adetail/274.html

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 Laravel-admin 的登录界面添加验证码,可以参考以下步骤: 1. 安装验证码库 可以使用 Laravel 自带的验证码库,也可以使用其他第三方库,这里以 Laravel 自带的验证码库为例。在 Laravel 中,可以使用 Composer 安装验证码库: ``` composer require mews/captcha ``` 2. 生成验证码 在登录页面的表单中添加验证码输入框和验证码图片,然后在后台生成验证码并将其显示在表单中。可以在登录页面的控制器中添加以下代码: ``` use Mews\Captcha\Captcha; public function getLogin() { $captcha = new Captcha(); $captcha->setFontSize(18); $captcha->setLength(4); $captcha->setBackgroundColor(255,255,255); $captcha->setFontColor(0, 0, 0); $captcha->generate(); $captcha_image = $captcha->inline(); return view('admin.login', compact('captcha_image')); } ``` 这段代码生成了一个验证码,并将其嵌入到 HTML 中,然后将其传递给登录页面的视图。 3. 验证验证码 在用户提交表单时,需要验证用户输入的验证码是否正确。可以在登录页面的控制器中添加以下代码: ``` use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; use Mews\Captcha\Captcha; public function postLogin(Request $request) { $validator = Validator::make($request->all(), [ 'username' => 'required', 'password' => 'required', 'captcha' => [ 'required', Rule::exists('captcha')->where(function ($query) use($request) { $query->where('captcha', $request->captcha)->where('captcha_type', 'admin_login'); }) ], ], [ 'captcha.exists' => '验证码不正确', ]); if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); } // 验证通过,进行登录操作 // ... } ``` 这段代码使用 Laravel 自带的表单验证功能,验证用户输入的验证码是否正确。如果验证码不正确,会返回错误信息。如果验证码正确,则进行登录操作。 4. 添加验证码表 为了保存验证码信息,需要在数据库中添加一个验证码表。可以使用以下 SQL 语句创建一个验证码表: ``` CREATE TABLE `captcha` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `captcha` varchar(10) NOT NULL, `captcha_type` varchar(50) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 这个表只包含三个字段:`id`、`captcha` 和 `captcha_type`。`id` 是自增主键,`captcha` 是验证码的内容,`captcha_type` 是验证码的类型,用于区分不同场景下的验证码。 5. 保存验证码信息 在生成验证码时,将验证码信息保存到数据库中。可以在 `getLogin` 方法中添加以下代码: ``` use Mews\Captcha\Captcha; use App\Models\Captcha as CaptchaModel; public function getLogin() { $captcha = new Captcha(); $captcha->setFontSize(18); $captcha->setLength(4); $captcha->setBackgroundColor(255,255,255); $captcha->setFontColor(0, 0, 0); $captcha->generate(); $captcha_image = $captcha->inline(); $captcha_db = new CaptchaModel(); $captcha_db->captcha = $captcha->getPhrase(); $captcha_db->captcha_type = 'admin_login'; $captcha_db->save(); return view('admin.login', compact('captcha_image')); } ``` 这段代码使用 `Captcha` 类生成验证码,并将验证码内容和类型保存到数据库中。 6. 清理过期验证码 为了避免数据库中出现大量过期的验证码,可以定期清理过期的验证码。可以在 `Kernel` 类中添加一个定时任务,每天清理过期的验证码: ``` use App\Models\Captcha; use Carbon\Carbon; protected function schedule(Schedule $schedule) { $schedule->call(function () { $expired_at = Carbon::now()->subMinute(30); Captcha::where('created_at', '<', $expired_at)->delete(); })->daily(); } ``` 这段代码每天执行一次,删除创建时间早于 30 分钟前的验证码记录。 以上就是向 Laravel-admin 登录界面添加验证码的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值