ars / laravel-otp-code
这是一个用于生成、验证和管理一次性密码(OTPs)的Laravel包,以增强身份验证流程的安全性。
v1.1.0
2024-08-20 13:38 UTC
Requires
- php: >=8.0
README
简介
此Laravel包提供了一套完整的解决方案,用于生成、存储和验证一次性密码(OTPs)。它支持可定制的OTP配置,包括类型、长度、过期时间、加密和验证规则,确保在您的Laravel应用程序中进行安全且灵活的OTP管理。
特性
- 生成具有可自定义类型和大小的安全OTP代码。
- 存储和管理具有可配置过期时间的OTP代码。
- 可选OTP加密以增强安全性。
- 验证规则以确保OTP完整性。
- 与Laravel应用程序无缝集成。
要求
- Laravel版本:10或更高
- PHP版本:8.0或更高
安装
要安装此包,请按照以下步骤操作
-
使用Composer要求该包:
composer require ars/laravel-otp-code
-
发布配置文件和迁移:
php artisan vendor:publish --provider="Ars\Otp\Providers\OtpCodeServiceProvider"
-
运行迁移:
php artisan migrate
配置
配置文件otp-code.php
包括以下选项
table_name
:存储OTP代码的数据库表名称。code_type
:OTP代码的数据类型(int
表示整数或string
表示字母数字)。code_length
:OTP代码的长度。max_attempts
:允许验证OTP的最大尝试次数(将0
设置为禁用尝试)。expiry_time
:OTP过期前的时间(以分钟为单位)。encrypt_code
:在存储之前是否加密OTP代码。default_salt
:如果没有提供,将使用的默认盐值。
用法
存储库
创建OTP
要创建OTP,请使用create
方法
$otpRepository = new \Ars\Otp\Repositories\OtpRepository(); $otp = $otpRepository->create('alireza2000sajedi@gmail.com'); $code = $otp->code;
验证OTP
要验证OTP,请使用verify
方法
$isValid = $otpRepository->verify('alireza2000sajedi@gmail.com', 1234);
检查OTP存在性
要检查是否存在有效的OTP,请使用has
方法
$exists = $otpRepository->has('alireza2000sajedi@gmail.com');
外观
该包提供了一个外观,以便轻松访问OTP存储库
use Ars\Otp\Facades\OtpCode; // Create OTP $otp = OtpCode::create('alireza2000sajedi@gmail.com'); $code = $otp->code; // Verify OTP $isValid = OtpCode::verify('alireza2000sajedi@gmail.com', 1234);
自定义验证规则
该包包含一个用于验证OTP代码的验证规则
use Ars\Otp\Rules\OtpCode; $request->validate([ 'email' => 'alireza2000sajedi@gmail.com', 'otp_code' => ['required', new OtpCode($request->get('email'))], ]);
示例
use Ars\Otp\Facades\OtpCode; //If has salt send parameter after identifier public function sendOtp($email, $salt = null) { if (OtpCode::has($email, $salt)) { return Responder::setErrorCode(201)->setMessage(trans('otp_code::otp-code.already_send'))->respond(); } $otp = OtpCode::create($email, $salt); Notification::send($email, new OtpNotification($otp->code)); }
自定义
错误消息
您可以通过修改语言文件来自定义错误消息。使用以下方法发布语言文件
php artisan vendor:publish --tag=lang --provider="Ars\Otp\Providers\OtpCodeServiceProvider"
命令
该包包含一个Artisan命令,用于清除过期的OTP代码
php artisan otp:clear-expired
结论
此包为在Laravel应用程序中管理OTP代码提供了一个强大的解决方案。通过利用存储库、外观和验证规则,您可以将OTP功能轻松集成到项目中。
贡献
欢迎贡献!请遵循以下指南
- 叉取存储库。
- 创建一个功能分支(git checkout -b feature/my-new-feature)。
- 提交您的更改(git commit -am '添加新功能')。
- 推送到分支(git push origin feature/my-new-feature)。
- 打开拉取请求。
许可
此库受MIT许可证的许可。
联系
有关支持或问题,请在GitHub上创建一个问题。