buckhamduffy / laravel-two-factor
这是我开发的laravel-two-factor包
v0.2.0
2024-09-23 02:08 UTC
Requires
- php: ^8.2
- bacon/bacon-qr-code: ^2.0
- illuminate/contracts: ^9.0|^10.0|^11.0
- pragmarx/google2fa-qrcode: ^3.0
- pragmarx/recovery: ^0.2.1
- spatie/laravel-data: ^3.0|^4.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- buckhamduffy/coding-standards: ^3
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.5
- pestphp/pest-plugin-laravel: ^2.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-23 02:09:09 UTC
README
这是一个针对Laravel的具有观点的两步验证包。
安装
您可以通过Composer安装此包
composer require buckhamduffy/laravel-two-factor
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="two-factor-migrations"
php artisan migrate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="two-factor-config"
这是发布配置文件的内容
return [
];
可选地,您可以使用以下命令发布视图
php artisan vendor:publish --tag="two-factor-views"
将特质和接口添加到用户模型中
use BuckhamDuffy\LaravelTwoFactor\Traits\HasTwoFactor; use BuckhamDuffy\LaravelTwoFactor\Interfaces\HasTwoFactorInterface; class User extends Model implements HasTwoFactorInterface { use HasTwoFactor; }
将中间件添加到您的Kernel.php中
protected $middlewareAliases = [ // ... '2fa' => \BuckhamDuffy\LaravelTwoFactor\Http\Middleware\TwoFactorMiddleware::class, ];
Route::middleware('2fa')->group(function(){ // Your routes here });
短信(尚未实现)
当通过短信请求代码时,将派发一个事件,您可以监听该事件以发送短信。您可以监听TwoFactorCodeRequested
事件并使用您首选的短信提供商发送短信。
use \BuckhamDuffy\LaravelTwoFactor\Events\TwoFactorCodeRequested; class EventProvider extends ServiceProvider { protected $listen = [ // ... TwoFactorCodeRequested::class => [ \App\Listeners\SendTwoFactorCode::class, ], ]; }
namespace App\Listeners; use BuckhamDuffy\LaravelTwoFactor\Events\TwoFactorCodeRequested; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Queue\InteractsWithQueue; class SendTwoFactorCode implements ShouldQueue { use InteractsWithQueue; public function handle(TwoFactorCodeRequested $event): void { $user = $event->getUser(); $user->sendTwoFactorSms($event->getCode()); } }
CustomThrottlesLogins
这是一个自定义登录节流器,根据用户的电子邮件地址进行节流。这是为了防止对登录页面的暴力破解攻击。
前5次尝试允许,然后节流5分钟。第8次尝试将被锁定15分钟。任何后续尝试将被锁定1小时。
在成功登录后或最后尝试后的24小时后重置尝试。
use Illuminate\Foundation\Auth\AuthenticatesUsers; use BuckhamDuffy\LaravelTwoFactor\Traits\CustomThrottlesLogins; class LoginController extends Controller { use AuthenticatesUsers; use CustomThrottlesLogins { CustomThrottlesLogins::hasTooManyLoginAttempts insteadof AuthenticatesUsers; CustomThrottlesLogins::incrementLoginAttempts insteadof AuthenticatesUsers; CustomThrottlesLogins::clearLoginAttempts insteadof AuthenticatesUsers; CustomThrottlesLogins::sendLockoutResponse insteadof AuthenticatesUsers; } }
测试
composer test
变更日志
请参阅CHANGELOG以获取最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请参阅我们的安全策略了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。