Laravel5 OTP 管理器

dev-master 2021-12-02 07:44 UTC

This package is not auto-updated.

Last update: 2024-09-29 01:38:02 UTC


README

Laravel 5 OTP 生成

该模块生成 OTP 并验证它们。您可以将自己的通知器(例如 AWS SNS)插入以将 OTP 发送到各种渠道。

提供了一些配置选项

  • 过期持续时间
  • 客户端在过期时间内允许的最大 OTP 数量
  • OTP 长度
  • 黑名单客户端
  • OTP 默认长度
  • 允许的验证 OTP 尝试次数
  • 验证 OTP 尝试次数计时

安装

通过 composer

  1. 运行 composer require fleetfoot/otp
  2. Fleetfoot\OTP\OTPServiceProvider 添加到 config/app.php 中的 providers 数组
  3. 运行 composer dump-autoload
  4. 运行 php artisan vendor:publish
  5. 运行 php artisan migrate

完成!

配置选项

该包发布 config/otp.php。它有很好的文档。

用法

该包提供了以下辅助函数

  1. 管理器
  2. 生成器
  3. 验证器

您可以使用 Manager 来与整个模块交互。它是对完整功能的包装器。但是,您也可以自由地使用其他辅助函数来生成和验证 OTP。

生成 OTP

要生成 OTP,请调用 Managergenerate 方法。这需要两个必填参数:模块和 ID。两者都是字符串。您可以在这里传递任何内容,但请记住,这个组合将被用于验证 OTP。例如,$manager->generate('users', '1') 将返回 'users' 模块和 ID '1' 的 OTP。如果您想更改默认 OTP 长度,则可以设置可选的第三个参数 $manager->generate('users', '1', 6)

验证 OTP

要验证,请调用管理器的 isValid()。它将根据 OTP 的有效性返回布尔值。验证确保模块 + ID 没有被阻止,令牌未过期,并且验证尝试没有超过限制

阻止和解锁

您将无法为阻止的模块 + ID 组合验证 OTP 或生成更多 OTP。

要阻止,请使用:$manager->block('users', '1')

要解锁,请使用:$manager->unblock('users', '1')

通知

管理器提供了一个接受任何 Notifier 接口实现的 notify() 方法。您可以按照您的业务逻辑实现此接口。

验证过程完成后,您可能想调用管理器的 useOtp()。如果您不调用此方法,OTP 将保持有效,直到它达到其过期限制。

清理过期的 OTP 和验证尝试

您可以通过运行以下命令清理过期的 OTP 和验证尝试:php artisan otp:clean

您可以在计划中这样做:$schedule->command('otp:clean')->daily();

贡献

欢迎所有贡献!创建分支,创建 PR,讨论!

待办事项

  1. 添加数字/字母代码生成的选项
  2. 提供通知器的示例实现
  3. 找到从数据库中删除过期的 OTP 的更好方法