vinkla/盾牌

此包已被废弃且不再维护。作者建议使用https://github.com/vinkla/laravel-shield#readme包代替。

Laravel的HTTP基本认证中间件

9.0.0 2023-02-14 10:29 UTC

README

此包曾经是Laravel的HTTP基本认证中间件。然而,由于我不再个人使用它,现在已被弃用。Laravel已经为它们的网络守卫内置了基本认证支持。

如果您需要为API使用更简单的基本认证,而不是依赖第三方库,您可以直接添加。请按照以下指南操作。

首先,更新您的.env文件,如下所示

BASIC_AUTH_USER=your-username
BASIC_AUTH_PASSWORD=your-password

按照以下方式修改您的config/auth.php文件

'basic' => [
    'user' => env('BASIC_AUTH_USER'),
    'password' => env('BASIC_AUTH_PASSWORD'),
],

最后,创建一个类似于以下代码的中间件

<?php

declare(strict_types=1);

namespace App\Http\Middleware;

use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;

class BasicAuthMiddleware
{
    public function handle(Request $request, Closure $next): Response
    {
        $user = config('auth.basic.user');
        $password = config('auth.basic.password');

        if (
            $request->getUser() !== $user ||
            $request->getPassword() !== $password
        ) {
            throw new UnauthorizedHttpException('Basic');
        }

        return $next($request);
    }
}

就是这样!现在您可以在路由中使用此中间件了。

use App\Http\Middleware\BasicAuthMiddleware;
use App\Models\User;

Route::get('api/users', function () {
    return User::all();
})->middleware(BasicAuthMiddleware::class);