olssonm/l5-very-basic-auth

Laravel 无状态 HTTP 基本认证,无需数据库

支持包维护!
olssonm

v7.1 2024-02-22 17:34 UTC

README

Latest Version on Packagist Total downloads Software License Build Status

very-basic-auth

文档可在以下语言中查看:

🇬🇧 英语
🇯🇵 日本語

此包允许您在不使用数据库的情况下,为您的路由添加 HTTP 基本认证过滤器——这是 Laravel 默认的 auth.basic 中间件所依赖的。

Screenshot

当您还没有设置数据库和/或模型,但想允许客户访问您的开发站点时,非常适合使用。或者,也许您的网站甚至不使用数据库,您仍然希望保护它。

认证失败时,用户将收到 "401 未授权" 的响应。

需要注意的事情

虽然 HTTP 基本认证确实提供了一层防止不请自来的访客的保护,但它仍然不能完全防止暴力破解攻击。如果您仅使用此包进行安全防护,您至少应该考虑检查 Apache 或 Nginx 的速率限制器以限制登录尝试。

安装

通过 Composer

$ composer require olssonm/l5-very-basic-auth

从 v4.* 版本(针对 Laravel 5.5)开始,此包使用包自动发现来加载服务提供者。安装完成后,您应该会看到以下消息:

Discovered Package: olssonm/l5-very-basic-auth

如果您想手动添加提供者,请在您的 composer.json 文件中禁用包的自动发现。

"extra": {
    "laravel": {
        "dont-discover": [
            "olssonm/l5-very-basic-auth"
        ]
    }
},

然后,在 config/app.php 中的提供者数组中添加提供者。

'providers' => [
    Olssonm\VeryBasicAuth\VeryBasicAuthServiceProvider::class
]

配置

运行命令 $ php artisan vendor:publish 并选择 Provider: Olssonm\VeryBasicAuth\VeryBasicAuthServiceProvider 来发布配置。您也可以输入 $ php artisan vendor:publish --provider="Olssonm\VeryBasicAuth\VeryBasicAuthServiceProvider" 来直接发布文件。

然后,very_basic_auth.php 文件将被复制到您的 app/config 文件夹中——在这里您可以设置各种选项,例如用户名和密码。

注意

没有默认密码。在安装过程中,您需要设置自己的用户名和密码。请发布包配置以设置这些值。如果留空,基本认证将不会激活

环境

您可以为包设置应用的环境。您可以使用 "*" 在所有环境中使用(这也是默认设置)。

'envs' => [
    '*'
],

或者

'envs' => [
    'production',
    'development',
    'local'
],

响应处理器

当认证失败时,响应处理器会发送错误响应(有关这些选项的更多信息,请参阅“视图和消息”)。默认情况下,处理器将是 \Olssonm\VeryBasicAuth\Handlers\DefaultResponseHandler(请参阅 very_basic_auth.php 中的 response_handler)。但是,如果您愿意,您可以编写自己的响应逻辑。唯一的要求是它实现了 \Olssonm\VeryBasicAuth\Handlers\ResponseHandler 接口,并且有一个接受请求对象的 __invoke 方法,如下所示:

use Illuminate\Http\Request;
use Olssonm\VeryBasicAuth\Handlers\ResponseHandler;

class CustomResponseHandler implements ResponseHandler
{
    public function __invoke(Request $request)
    {
        // Do some stuff
        return response('Custom response', 401);
    }
}

视图和消息

very_basic_auth.php 配置中,您可以设置一个自定义视图而不是消息。

// Message to display if the user "opts out"/clicks "cancel"
'error_message'     => 'You have to supply your credentials to access this resource.',

// If you prefer to use a view with your error message you can uncomment "error_view".
// This will supersede your default response message
// 'error_view'        => 'very_basic_auth::default'

如果您取消注释 error_view,中间件将尝试找到您指定的视图。您像通常一样提供此值(不包含 .blade.php 扩展名)。

使用

中间件使用auth.very_basic过滤器来保护路由。您可以使用Route::group()来保护多个路由,也可以单独保护它们。

分组

Route::group(['middleware' => 'auth.very_basic'], function() {
    Route::get('/', ['as' => 'start', 'uses' => 'StartController@index']);
    Route::get('/page', ['as' => 'page', 'uses' => 'StartController@page']);
});

单独

Route::get('/', [
    'as' => 'start',
    'uses' => 'StartController@index',
    'middleware' => 'auth.very_basic'
]);

您还可以在行内设置凭据;

Route::get('/', [
    'as' => 'start',
    'uses' => 'StartController@index',
    'middleware' => 'auth.very_basic:username,password'
]);

注意:行内凭据始终优先于very_basic_auth.php配置文件。

测试

$ composer test

$ phpunit

在运行测试时,Laravel始终在“测试”环境中运行。请确保在very_basic_auth.php中的envs数组中设置了testing

谢谢

感谢为这个包做出贡献的人们,其中包括

kazuhei – 提供了出色的日语翻译
freekmurze – 提供了有关包/供应商安装的附加信息
faiare – 指出并实现了realm属性(《RFC7235》)

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。

© 2024 Marcus Olsson