关于laravel:Laravel集成图片验证码

1. 根底的装置/用法请参照我的项目文档

github: https://github.com/mewebstudi…

2. api调用接口

http://localhost/captcha/api/math
math能够替换为配置文件的所定义的验证码类型
该接口返回json,次要应用两个参数key和img
key须要一起传递给后盾做验证
img是图片base64 用作前端显示
后盾验证

$rules = ['captcha' => 'required|captcha_api:'. request('key') . ',default'];
$validator = validator()->make(request()->all(), $rules);

3. 集成passport做登录验证

通过middleware形式拦挡验证
创立CheckLoginCaptchaMiddleware中间件

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckLoginCaptchaMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        if($request->path()==="oauth/token"){ // 判断是否是passport登录接口
            $check = validator($request->all(),[
                'captcha' => 'required|captcha_api:'. request('key') . ',login'
            ]);
            if(!$check->passes()){
                return response(["message"=>$check->errors()->first()],400);
            }
        }
        return $next($request);
    }
}

在Http/kernel.php

   protected $middleware = [
      ...
      \App\Http\Middleware\CheckLoginCaptchaMiddleware::class,
   ];

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理