ars/laravel-otp-code

这是一个用于生成、验证和管理一次性密码(OTPs)的Laravel包,以增强身份验证流程的安全性。

v1.1.0 2024-08-20 13:38 UTC

This package is auto-updated.

Last update: 2024-09-27 22:31:51 UTC


README

简介

此Laravel包提供了一套完整的解决方案,用于生成、存储和验证一次性密码(OTPs)。它支持可定制的OTP配置,包括类型、长度、过期时间、加密和验证规则,确保在您的Laravel应用程序中进行安全且灵活的OTP管理。

特性

  • 生成具有可自定义类型和大小的安全OTP代码。
  • 存储和管理具有可配置过期时间的OTP代码。
  • 可选OTP加密以增强安全性。
  • 验证规则以确保OTP完整性。
  • 与Laravel应用程序无缝集成。

要求

  • Laravel版本:10或更高
  • PHP版本:8.0或更高

安装

要安装此包,请按照以下步骤操作

  1. 使用Composer要求该包:

    composer require ars/laravel-otp-code
  2. 发布配置文件和迁移:

    php artisan vendor:publish --provider="Ars\Otp\Providers\OtpCodeServiceProvider"
  3. 运行迁移:

    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功能轻松集成到项目中。

贡献

欢迎贡献!请遵循以下指南

  1. 叉取存储库。
  2. 创建一个功能分支(git checkout -b feature/my-new-feature)。
  3. 提交您的更改(git commit -am '添加新功能')。
  4. 推送到分支(git push origin feature/my-new-feature)。
  5. 打开拉取请求。

许可

此库受MIT许可证的许可。

联系

有关支持或问题,请在GitHub上创建一个问题。