alexgeno/phone-verification-bundle

这是一个通过 Symfony Notifier SMS 通道进行电话验证的包。任何 SMS 服务都可以用作发送者。可以使用 Redis 或 MongoDB 作为存储。

v1.0.2 2023-09-20 15:08 UTC

This package is auto-updated.

Last update: 2024-09-12 08:08:16 UTC


README

Build Status Build Status Build Status Build Status Coverage Status

在现代网站或移动应用上登录或注册通常遵循以下步骤

  • 用户通过提交电话号码来启动验证
  • 用户接收包含一次性密码(OTP)的短信或电话
  • 用户通过提交 OTP 来完成验证

此库基于 alexeygeno/phone-verification-php 构建,并允许您设置此功能

支持的功能

要求

安装

composer require alexgeno/phone-verification-bundle snc/redis-bundle predis/predis symfony/vonage-notifier

注意:配置中默认使用 Redis 作为存储和 Vonage 作为 SMS 服务

使用

依赖注入

public function initiate(\AlexGeno\PhoneVerification\Manager\Initiator $manager)
{
    $manager->initiate('+15417543010');
}
public function complete(\AlexGeno\PhoneVerification\Manager\Completer $manager)
{
    $manager->complete('+15417543010', 1234);
}

控制台命令

bin/console phone-verification:initiate --to=+15417543010
bin/console phone-verification:complete --to=+15417543010 --otp=1234

路由

curl -X POST localhost/phone-verification/initiate/+15417543010
{"ok":true,"message":"Sms has been sent. Check your Phone!"}
curl -X POST localhost/phone-verification/complete/+15417543010/1234
{"ok":true,"message":"The verification is done!"}

配置

此包将自动通过 Flex 菜谱启用和配置。如果您不使用 Flex,请参阅 docs/CONFIGURATION.md 了解如何手动操作

不同的存储和 SMS 服务

要在不同存储和 SMS 服务之间切换,请安装相应的包并更新配置。例如,要使用 Mongodb 作为存储和 Twilio 作为 SMS 服务

composer require doctrine/mongodb-odm-bundle symfony/twilio-notifier
alex_geno_phone_verification:
    storage:
        driver: mongodb
        # ...
    sender:
        transport: twilio
# ...

如果可用的选项不足,您可以通过添加自定义存储(实现 \AlexGeno\PhoneVerification\Storage\I)或/和发送者(实现 \AlexGeno\PhoneVerification\Sender\I)来操作,并使用它们来 装饰 相应的服务(alex_geno_phone_verification.senderalex_geno_phone_verification.storage

注意:如果您使用 Mongodb 作为存储,请参阅 docs/MIGRATIONS.md