upaid/sms-verification

此包提供了一种方便的工具,用于在不同流程中发送和验证短信验证码。仅适用于Laravel框架

0.1.10 2021-03-03 10:02 UTC

This package is auto-updated.

Last update: 2024-08-29 04:59:06 UTC


README

License: MIT 此包提供了一套用于发送和验证短信验证码的工具。

安装

可以通过Composer安装此包

composer require upaid/sms-verification

或者在您的Laravel应用的composer.json文件的require部分添加以下行

    "require": {
        "upaid/sms-verification": "0.1.*"
    }

运行composer update upaid/sms-verification来安装此包。

概述

此包的核心部分是所谓的“管理者”——实现以下接口的类

interface SmsManagerInterface
{
    public function sendSmsCode(string $action, string $phone, array $messageTranslationPlaceholders = []): string;
    public function checkSmsCode(string $action, string $phone, string $code): string;
    public function sendSmsAgain(string $action, string $phone, array $messageTranslationPlaceholders = []): string;
    public function flushPendingSmsValidation(string $id): void;
}

以下为简短描述

  • sendSmsCode - 生成验证码,在给定操作和电话号码的上下文中将其存储在缓存中,发送带有生成验证码的短信并返回此操作的状态
  • checkSmsCode - 检查给定代码是否与缓存中存储的代码(在相同的上下文中)相同,并返回状态;此外,它还准备好处理达到失败尝试次数限制的情况(您可以在配置和回调中定义如何处理这种情况)
  • sendSmsAgain - 重置失败尝试计数器,然后执行与sendSmsCode相同的操作(您可以在配置中限制此方法的使用)
  • flushPendingSmsValidation - 从缓存中删除所有短信验证密钥(例如,当用户登录时可以使用)当然,所有这些子任务都委托给通过接口注入的依赖项,因此您可以修改此包的大部分内容,而无需编辑现有类。

配置

包配置位于config/sms_verification.php文件中。您需要将此文件复制到Laravel项目的config文件夹中。为此,您可以执行

php artisan vendor:publish --tag=config

以下是一个可配置选项列表

  • api - 短信API连接设置
  • log_message - 用于记录发送消息的模板(如果配置了记录)
  • status_map - 用于自定义返回的状态
  • status_placeholders - 用于自定义从短信API返回的关于发送短信号码/计数的返回信息的格式(如果从短信API返回)
  • multi_lock_types - 确定MultiTypeLockManager类中使用的可用锁类型列表
  • cache_life_time - 项在缓存中存储的时间
  • lock_life_time - 锁定持续时间(在BaseCacheLockManager中使用,与核心功能关系不大,但如果您使用锁,则很重要)
  • sms_code_length - 生成短信验证码的长度
  • checks_limit - 一个短信验证码的最大失败检查尝试次数;达到此限制可能会导致创建锁或重发短信验证码,具体取决于您使用的管理器
  • send_again_limit - 定义在给定上下文中可以使用的sendSmsAgain功能的次数。在LimitedResendManager类中使用
  • actions - 可用操作的列表。应在您的项目中覆盖并扩展Components/Actions
  • translations - 翻译配置。如果您使用Laravel翻译器(Components/Callbacks/MessageComposer),请将格式为[action => translation_key]的数组传递到此参数。您还可以在您的项目中覆盖MessageComposer实现
  • dummy_services_environments - 将使用模拟发送者的环境列表
  • force_use_real_services - 如果为真,即使在 dummy_services_environments 列表中,也会发送真实的短信
  • callbacks - 可配置回调列表。您可以通过实现方法 __invoke 来定义自己的回调类
    • dummy_services - 您必须传递一个回调类,该类决定是否生成并发送真实的短信代码(或者使用虚拟发送者,作为替代)。虚拟发送者将记录消息而不实际发送(如果配置了日志记录)
    • manager - 您必须传递一个回调,该回调创建 SmsManagerInterface 的实例
    • log - 传递一个实现日志记录的回调
    • over_limit - 当在 LimitedResendManager 中达到 send_again_limit 时,执行此回调
    • message_composer - 负责组合和翻译短信消息内容
    • lock_manager - 回调创建一个 LockManagerInterface 的实例,该实例可用于在缓存或数据库中锁定用户,或仅锁定某些功能(如密码重置或电子邮件更改)