创建自定义API接口异常类
vim app/Exceptions/ExceptionApi.php
<?php
namespace App\Exceptions;
use Exception;
class ExceptionApi extends Exception
{
    protected $apiCode=400;
    public function __construct($message = "", $code = 400)
    {
        $this->apiCode = $code;
        parent::__construct($message, 200);
    }
    public function render(){
        return response()->json(['msg' => $this->message,'code'=>$this->apiCode,'data'=>null], 200);
    }
}
忽略异常日志报告
vim app/Exceptions/Handler.php
    protected $dontReport = [ExceptionApi::class];
添加用户授权令牌字段
Laravel 自带的 users 数据表, 新增 api_token 字段
设置中间件路由
vim routes.php
Route::group(['middleware'=>'auth:api'], function (){
    Route::get('/user', function () {
        // return 'ok';
        return new Response('hello TikBall');
    });
});
请求添加 api_token 参数
http://your_site.com/api/user?api_token=123458
默认情况下,请求参数api_token的值,会和users用户数据表的api_token字段值对比,相同则授权通过。
修改授权验证逻辑
# app/Http/Kernel.php
......
protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
......
];
......
# app/Exceptions/ExceptionApi.php
......
use App\Exceptions\ExceptionApi;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
    public function handle($request, Closure $next, ...$guards)
    {
     $token = $request->input('api_token');
     $user = User::query()->where(['api_token'=>hash('sha256', $token)])->first();
        if (empty($guards)) {
            $guards = [null];
        }
        foreach ($guards as $guard) {
//            if($this->auth->guard($guard)->guest()){
//                throw new ExceptionApi(' auth access refuse');
//            }
            if ($this->auth->guard($guard)->check()) {
                $this->auth->shouldUse($guard);
            }
        }
        return $next($request);
    }
}
Laravel 使用 JWT 实现 API Auth, 打造用户授权接口 https://learnku.com/articles/6216/laravel-uses-jwt-to-implement-api-auth-to-build-user-authorization-interfaces
 沙滩星空的博客
沙滩星空的博客