位置: 编程技术 - 正文

在 Laravel 中 “规范” 的开发短信验证码发送功能(在laravel中,界面文件应该放在以下哪个路径下)

编辑:rootadmin

推荐整理分享在 Laravel 中 “规范” 的开发短信验证码发送功能(在laravel中,界面文件应该放在以下哪个路径下),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:在laravel中,关于页面跳转说法正确的是,在laravel中实现加法计算,在laravel中返回json格式的数据,在laravel中,关于页面跳转说法正确的是,在laravel中,命名空间使用什么关键字,在laravel中,命名空间使用()关键字?,在laravel中,命名空间使用什么关键字,在laravel中,命名空间使用什么关键字,内容如对您有帮助,希望把文章链接给更多的朋友!

Laravel简介

Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。

在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。

Laravel 中 “规范” 的开发短信验证码发送功能需求场景

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

完成

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

创建通知场景

第一步,使用 php artisan make:notification 创建一个通知类,创建成功后默认已经存在了三个方法 via、toMail 和 toArray ,因为是发送验证码,姑将这个控制类命名为 VerificationCode 。

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

ThinkSNS+的迁移如下:

第二步,打开数据模型类,在里面添加 IlluminateNotificationsNotifiable 性状:

从代码里面,可以看到我们还添加了「软删除」,因为是基于手机号或者邮箱的验证码发送,所以不需要其他的内置花花肠子,也不需要记录到 「消息通知数据表」中,所以 routeNotificationFor 方法我们选择直接返回需要发送的账号(手机号或邮箱)。

加入工厂模式,快捷发送

打开 database/factories/ModelFactory.php 在里面添加一个关于通知数据模型的工厂定义:

这样,我们就可以通过 factory(ZhiyiPlusModelsVerificationCode::class) 工厂函数快捷的创建验证码并发送通知。

为什么在验证码数据模型增加通知性状?

首先 IlluminateNotificationsNotifiable 这份性状,Laravel 默认添加到 User 模型中的,所以通过 $user->notify() 可以快速的给用户发送一个通知,但是在规范文档中有这么一句话:

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

这是Laravel官方文档原话,意思就是IlluminateNotificationsNotifiable不仅仅是用在 User 模型上。

所以我们在验证码模型中添加 IlluminateNotificationsNotifiable 是完全符合Laravel通知的正确使用的。

开发通知类

首先,在数据表迁移中存在一个字段 channel 也就是通知频道标识,我们可根据这个值来决定用什么方式发送验证码,而这个操作在通知类的 via 中实现的:

我们选择方式就是直接返回 channel 值,这个值可以是任何值,只要我们实现了这个通知频道,都可以发送,而Laravel已经内置和一些发送频道 database、mail 和 nexmo

在 Laravel 中 “规范” 的开发短信验证码发送功能(在laravel中,界面文件应该放在以下哪个路径下)

完成邮件验证码发送

其实,这个步骤我们要做的事情已经很少了,生产通知类的时候,已经完成了 toMail 方法,所以,我们直接修改其消息内容即可。

完成短信验证码发送

短信发送我们采用 overtrue/easy-sms 包,这是安正超开发的一个短信发送客户端,已经内置了很多短信平台,实现也很优秀。(吐槽:虽然有些细节有问题,例如不按照契约调用方法传递网关)

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

我门增加了一个 channel 配置,用于不同场景,例如验证码场景 code 以方便消息器读取配置。

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

至此 EasySms 在 Laravel 中的集成已经完成,但是还没有开发实际功能,我们接着往下看。

开发 sms 发送频道

为什么要开发?首先,easy-sms 支持的很多,可以考虑单独为每个发送平台开发一个通知发送频道类,也可以采用只开发一个 sms 发送频道类,我们选择开发一个sms通知发送类,通过 easy-sms 的策略机制去多平台发送验证码。

首先,新建一个 app/Notifications/Channels/SmsChannel.php 文件,因为 Laravel 没有提供生成函数,这个需要自己创建哟,只要实现 send 方法即可。 SmsChannel 内容如下:

这样基于 easy-sms 的 短信通知发送频道已经完成。

开发场景发送消息

这部分完全属于 easy-sms 使用开发,我们新建一个 VerificationCodeMessage.php ,内容如下:

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

场景配置,例如验证码不同频道的 template 等,这样消息器就可以根据发送网关来判断使用场景的配置是什么。

再次吐槽,easy-sms 的契约设计也应该是这个思想,但是 getContent/getTemplate/getData 在实际网关调用的时候根本没有传递网关过来。。。

好了我们的开发完成了。

发送验证码

在创建验证码数据模型的时候就已经添加到「工厂」中,所以我们可以直接使用 factory 函数了,发送演示:

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

上面代码都是来自于 ThinkSNS Plus ,看完整的开发代码可以看仓库:

GitHub: Laravel 中 “规范” 的开发短信验证码发送功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

PHP的Yii框架的基本使用示例 在Yii自动生成的代码里,我们总能在admin的界面看到CGridView的身影。这是一个很好用的展示数据的表格控件,用的好可以明显地加快开发进度。下面就让

win7系统配置php+Apache+mysql环境的方法 B/S架构当下很流行,因为B/S架构有众多优点,例如:用户只需有浏览器就可使用,维护升级都比较方便,跨平台,等等。本文就讲讲Windows+Apache+PHP+Mysql

php生成图片验证码-附五种验证码 以前输出验证码的时候用过一个方法,在前台用JS生成验证码字符串,再传递到后台用PHP输出验证码图像。这样在验证时就不需要使用$_SESSION传递验证码

标签: 在laravel中,界面文件应该放在以下哪个路径下

本文链接地址:https://www.jiuchutong.com/biancheng/284379.html 转载请保留说明!

上一篇:php静态成员方法和静态的成员属性的使用方法(php静态函数)

下一篇:PHP的Yii框架的基本使用示例(php yii框架)

  • 计提并结转所得税费用的会计分录
  • 个体户如何报税步骤
  • 什么叫风险纳税人员
  • 什么是银行税贷产品
  • 以前年度损益调整账务处理分录
  • 工程施工企业收入和成本需不需要设置按项目核算
  • 税额四舍五入的计算公式
  • 未开票收入以后必须开票吗
  • 社保费公司部分怎么算
  • 外购商品用于赠送分录
  • 以前年度损益调整会计分录
  • 事业单位退休职业年金发放多少个月
  • 企业减免的所得税税率
  • 哪些企业可以享受加计扣除优惠政策?
  • 逃避缴纳税款罪移送公安标准
  • 铝合金失效分析案例
  • 小微企业差旅费可以税前扣除吗
  • 企业所得税哪些不可以税前扣除
  • 购销合同印花税计税依据
  • 资产负债表中的预付款项目应根据什么填列
  • 需要会计报表的人
  • 应收账款及票据
  • 子公司注销如何做账
  • 一般纳税人企业所得税如何计算
  • 计提其他应收款坏账
  • 苹果电脑安装中国银行控件用不了
  • 事业单位研究开题报告
  • win11任务栏白色卡死
  • 京东预付卡怎么做账
  • 无法添加用户和组
  • 免征的农资增值税怎么算
  • 鸿蒙可以看小电影吗
  • PHP 中dirname(_file_)讲解
  • 小米路由器开启ssh后怎么安装插件
  • mac如何关闭开机启动
  • 苹果发布macOS13.5开发者预览版
  • php cgi
  • 印度活根桥 (© dhritipurna/Shutterstock)
  • php正则表达式匹配字符串
  • php设计原则
  • zendstudio怎么创建php项目
  • 目标检测现状
  • 小规模未开票收入如何申报增值税
  • 逻辑回归模型
  • 如何解决php乱码
  • 企业购进商品支付货款时,实际发生现金折扣,应计入
  • 租赁合同印花税怎么申报缴纳
  • mongo创建db
  • 营改增后房地产开发税费一览表
  • 筹资费用可以算成本吗
  • 外管证超期
  • 礼物提前到会不会不好
  • 应付账款尾差如何处理
  • 企业税金及附加包括什么
  • 少数股东损益会出现负数吗
  • 财务管理考试时间不够怎么办
  • 养老保险和工伤失业保险不在一个时间
  • 货代是否负责损失
  • 利息收入如何开票
  • 企业职工福利费使用范围和标准
  • 其他权益工具包括交易性金融资产吗
  • sql server的存储方式
  • mysql数据库崩了怎么恢复
  • linux如何列出所有用户
  • centos7网卡强制千兆
  • win8.1不能关机
  • 微软反盗xp黑屏怎么办
  • 移动硬盘做win7系统盘
  • redhat linux6.5安装教程
  • cocos2dx4.0教程
  • 刨根问底造句
  • javascript函数调用函数
  • Button.setOnClickListener(OnClickListener l) 原理
  • 项目遇到的问题及解决办法
  • 税务大厅买票需要什么东西
  • 深圳电子税务局税种启用在哪里
  • 福建省国家税务局网
  • 温州地方税务局
  • 税务发票小助手 小程序二维码
  • 我国近十年财政支出结构占比
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设