youngmayor / laravel-otp
用于生成和验证一次性密码的laravel包
Requires
- php: ^7.2|^8.0
- illuminate/support: ~6|~7|~8
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
README
用于创建、验证和管理OTP的laravel包。
安装
您可以通过composer安装此包
composer require youngmayor/laravel-otp
该包使用自动发现,因此如果您使用Laravel 5.5或更高版本,安装包将自动在您的应用程序中注册。
但是,如果您使用Laravel 5.4或以下版本,您需要将以下代码片段添加到您的 config/app.php
中以注册服务提供者和别名
'providers' => [ // ... YoungMayor\LaravelOtp\LaravelOtpServiceProvider, // ... ],
下一步是发布包的配置。可以使用以下命令完成此操作
php artisan vendor:publish --provider="YoungMayor\LaravelOtp\LaravelOtpServiceProvider"
这会将包配置复制到 config/laravel-otp.php
然后您运行迁移来创建OTP表
php artisan migrate
用法
打算管理OTP代码的模型应扩展 YoungMayor\LaravelOtp\Traits\OTPActions
特性
// ... use YoungMayor\LaravelOtp\Traits\OTPActions; // ... class ExampleModel { // ... use OTPActions; // .... }
模型必须具有电子邮件字段。此字段将存储生成OTP代码的收件人。假设该字段名为email。如果字段名称不同,则应使用以下代码进行配置
class ExampleModel { use OTPActions; public $otpEmailKey = 'user_email'; }
现在可以使用该模型管理OTP。
OTP创建
// $exampleModel is an instance of ExampleModel // $payload is additional data that you would like to attach to the OTP token. // The payload can be an array, a string or an integer $exampleModel->generatOTP('action-name', $payload);
这会使用在 config/laravel-otp.php
中定义的配置生成OTP,并将生成的OTP通过电子邮件发送到模型的附件
OTP验证
// $exampleModel is an instance of ExampleModel and has a pending OTP // $pin is the OTP pin that is to be validated $otp = $exampleModel->validateOTP($pin, 'action-name');
如果密码正确,则返回 YoungMayor\LaravelOtp\Models\OneTimePin
的实例,否则返回null
if (!$otp) { // handle invalid OTP code }
管理OTP
OTP现在可以按以下方式管理
$otp->is_expired; // check if the OTP is expired $payload = $otp->payload; // retrieve the OTP's Payload $otp->refreshOTP(); // re-generate a new OTP code and send to the recipient $otp->delete(); // delete the OTP
关系
使用 OTPActions
特性的每个模型都具有 otps
关系,并且可以在其上执行 laravel一对多 关系。
同样,从 YoungMayor\LaravelOtp\Models\OneTimePin
实例。您可以使用源关系方法检索源模型
$exampleModel = $otp->source;
异常
该包渲染两个异常
-
YoungMayor\LaravelOtp\Exceptions\InvalidAction
异常:当尝试使用未在config/laravel-otp.php
文件中注册的操作进行generateOTP()
或validateOTP()
时抛出。 -
YoungMayor\LaravelOtp\Exceptions\InvalidSource
异常:当给定源未使用OTPActions
特性时抛出
测试
composer test
更改日志
有关最近更改的更多信息,请参阅 CHANGELOG
贡献
有关详细信息,请参阅 CONTRIBUTING
安全
如果您发现任何安全问题,请通过电子邮件 youngmayor.dev@gmail.com 而不是使用问题跟踪器
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件
Laravel包模板
此包是使用 Laravel包模板 生成的。