upaid / sms-verification
此包提供了一种方便的工具,用于在不同流程中发送和验证短信验证码。仅适用于Laravel框架
0.1.10
2021-03-03 10:02 UTC
Requires
- php: >=7.0.0
- guzzlehttp/guzzle: >=6.2
- illuminate/support: >=5.6
- illuminate/translation: >=5.6
- psr/log: ^1.0
- upaid/contextual-keys: 1.*
Requires (Dev)
- mockery/mockery: ^0.9.5
- phpunit/phpunit: >=7.0
- psr/http-message: ^1.0
README
安装
可以通过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 的实例,该实例可用于在缓存或数据库中锁定用户,或仅锁定某些功能(如密码重置或电子邮件更改)