如何在 Laravel 中 “规范” 的开发验证码发送功能

  • 时间:
  • 浏览:0
  • 来源:uu快3玩法_uu快3新平台_棋牌

在创建验证码数据模型的事先就意味上加到「工厂」中,好多好多 亲们可无需能 直接使用 factory 函数了,发送演示:

再次吐槽,easy-sms 的契约设计也应该是你你是什么 思想,有然后 getContent/getTemplate/getData 在实际网关调用的事先根本这么传递网关过来。。。

完成短信验证码发送

里边代码全是来自于 ThinkSNS Plus ,看后整的开发代码可无需能 看仓库:

首先,在数据表迁移中居于另另2个字段 channel 也好多好多 通知频道标识,亲们可根据你你是什么 值来决定用有哪些土辦法 发送验证码,而你你是什么 操作在通知类的 via 中实现的:

首先 Illuminate\Notifications\Notifiable 这份性状,Laravel 默认上加到 User 模型中的,好多好多 通过 $user->notify() 可无需能 快速的给用户发送另另2个通知,有然后在规范文档中含这么语句:

为有哪些要开发?首先,easy-sms 支持的好多好多 ,可无需能 考虑单独为每个发送平台开发另另2个通知发送频道类,也可无需能 采用只开发另另2个 sms 发送频道类,亲们选择开发另另2个sms通知发送类,通过 easy-sms 的策略机制去多平台发送验证码。

觉得,你你是什么 步骤亲们要做的事情意味很少了,生产通知类的事先,意味完成了 toMail 土辦法 ,好多好多 ,亲们直接修改其消息内容即可。

完成

有然后创建另另2个验证码数据模型和数据表迁移,可无需能 使用 php artisan make:model "VerificationCode" -m 直接快速创建数据模型和迁移。

大功告成,easy-sms 是另另2个很不错的包哟。

完成邮件验证码发送

加入工厂模式,快捷发送

短信发送亲们采用 overtrue/easy-sms 包,这是安正超开发的另另2个短信发送客户端,意味内置了好多好多 短信平台,实现也很优秀。(吐槽:觉得其他细节有疑问,类式不按照契约调用土辦法 传递网关)

首先,在 Laravel 中的规范好多好多 使用 Laravel 的「消息通知」,这里基于场景为「验证码」。你你是什么 需求几乎所有软件系统全是使用到。

发送「验证码」意味「消息通知」,可发送到手机或邮箱中。

这是Laravel官方文档原话,意思好多好多 Illuminate\Notifications\Notifiable不仅仅是用在 User 模型上。

ThinkSNS+的迁移如下:

当当我们都 增加了另另2个 channel 配置,用于不同场景,类式验证码场景 code 以方便消息器读取配置。

GitHub: https://github.com/slimkit/thinksns-plus

发送验证码

亲们选择土辦法 好多好多 直接返回 channel 值,你你是什么 值可无需能 是任何值,假使 亲们实现了你你是什么 通知频道,都可无需能 发送,而Laravel意味内置和其他发送频道 database、mail 和 nexmo

场景配置,类式验证码不同频道的 template 等,好多好多 消息器就可无需能 根据发送网关来判断使用场景的配置是有哪些。

开发场景发送消息

有然后打开 AppServiceProvider.php 在 register 中增加如下:



至此 EasySms 在 Laravel 中的集成意味完成,有然后还这么开发实际功能,亲们接着往下看。

好了亲们的开发完成了。

首先,新建另另2个 app/Notifications/Channels/SmsChannel.php 文件,意味 Laravel 这么提供生成函数,你你是什么 不能 当时人创建哟,假使 实现 send 土辦法 即可。 SmsChannel 内容如下:

为有哪些在验证码数据模型增加通知性状?

从代码里边,可无需能 看后亲们还上加了「软删除」,意味是基于手机号意味邮箱的验证码发送,好多好多 无需能 其他的内置花花肠子,好多好多 不能 记录到 「消息通知数据表」中,好多好多 routeNotificationFor 土辦法 亲们选择直接返回不能 发送的账号(手机号或邮箱)。

第一步,使用 php artisan make:notification 创建另另2个通知类,创建成功后默认意味居于了另另2个土辦法 via、toMail 和 toArray ,意味是发送验证码,姑将你你是什么 控制类命名为 VerificationCode 。

好多好多 ,亲们就可无需能 通过 factory(\Zhiyi\Plus\Models\VerificationCode::class) 工厂函数快捷的创建验证码并发送通知。

Remember, you may use the Illuminate\Notifications\Notifiable trait on any of your models. You are not limited to only including it on your User model.

需求场景

打开 database/factories/ModelFactory.php 在里边上加另另2个关于通知数据模型的工厂定义:

这每项删剪属于 easy-sms 使用开发,亲们新建另另2个 VerificationCodeMessage.php ,内容如下:

开发 sms 发送频道

第二步,打开数据模型类,在里边上加 Illuminate\Notifications\Notifiable 性状:

创建通知场景

好多好多 亲们在验证码模型中上加 Illuminate\Notifications\Notifiable 是删剪符合Laravel通知的正确使用的。

开发通知类

有然后亲们回到 VerificationCode 验证码通知类中,增加 toSms 土辦法 ,我的代码如下:

首先依赖短信发送客户端包composer require overtrue/easy-sms有然后新建配置 /config/sms.php ,内容嘛,就按照 easy-sms 首页的说明增加即可,先贴出亲们的配置内容(为了减少文章字数,只保留阿里大于配置):



好多好多 基于 easy-sms 的 短信通知发送频道意味完成。