olssonm / l5-very-basic-auth
Laravel 无状态 HTTP 基本认证,无需数据库
Requires
- php: ^8.0 || ^8.1 || ^8.2
- illuminate/support: ^9.0 || ^10.0 || ^11.0
- squizlabs/php_codesniffer: ^3.5
Requires (Dev)
- laravel/helpers: ^1.1
- orchestra/testbench: ^7.0 || ^8.0 || ^9.0
- pestphp/pest: ^1.0 || ^2.0
- pestphp/pest-plugin-laravel: ^1.2 || ^2.0
- phpunit/phpunit: ^9.0 || ^10.5
- dev-master / 11.x-dev
- v7.1
- v7.0
- v6.9
- v6.8
- v6.7
- v6.6
- v6.5
- v6.4
- v6.3
- v6.2
- v6.1
- v6.0
- v5.6
- v5.5
- v5.4
- v5.3
- v5.2
- v5.1
- v5.0
- v4.1
- v4.0
- v3.0
- v2.1.0
- v2.0.1
- v2.0
- v1.2.2
- v1.2.1
- v1.2
- v1.1.1
- v1.1
- v1.0
- dev-fix/readme
- dev-dev/fix-stub
- dev-fix/build-shield
- dev-dev/custom-handler
- dev-dev/laravel-9
- dev-dev/php-81
- dev-dev/password-update
This package is auto-updated.
Last update: 2024-09-22 19:13:18 UTC
README
文档可在以下语言中查看:
此包允许您在不使用数据库的情况下,为您的路由添加 HTTP 基本认证过滤器——这是 Laravel 默认的 auth.basic
中间件所依赖的。
当您还没有设置数据库和/或模型,但想允许客户访问您的开发站点时,非常适合使用。或者,也许您的网站甚至不使用数据库,您仍然希望保护它。
认证失败时,用户将收到 "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。