600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > laravel5.4使用Laravel Sms和阿里云短信服务实现短信验证码功能

laravel5.4使用Laravel Sms和阿里云短信服务实现短信验证码功能

时间:2022-07-21 23:32:58

相关推荐

laravel5.4使用Laravel Sms和阿里云短信服务实现短信验证码功能

laravel 实现短信验证码功能,搜索资料发现比较流行的有两个包:

一个是laravel sms 地址 /toplan/laravel-sms

一个是easy sms 地址/overtrue/easy-sms,

经过比较还是选择lara sms

按照guthub readme进行

安装:

在项目根目录下运行如下composer命令:(如果没有安装composer请先安装composer)

//推荐(博主使用的推荐选项)composer require toplan/laravel-sms:~2.6

准备工作

1.注册服务提供器

在config/app.php文件中providers数组里加入:

Toplan\PhpSms\PhpSmsServiceProvider::class,Toplan\Sms\SmsManagerServiceProvider::class,

在config/app.php文件中的aliases数组里加入

'PhpSms' => Toplan\PhpSms\Facades\Sms::class,'SmsManager' => Toplan\Sms\Facades\SmsManager::class,

2.参数配置

生成配置文件和migration文件,分别在根目录执行下面两条命令

php artisan vendor:publish --provider="Toplan\PhpSms\PhpSmsServiceProvider"php artisan vendor:publish --provider="Toplan\Sms\SmsManagerServiceProvider"

这里会在config文件夹中生成两个配置文件,分别为phpsms.php和laravel-sms.php。database中生成migrations

配置代理器参数

在config/phpsms.php的agents数组中,找到你想要使用的代理器,并填写好配置信息。(注意阿里云的短信服务和阿里大鱼不是一个东西,不要弄混了)

博主选用的阿里云的短信服务,此处配置如下

主要是修改参数,阿里云短信服务,相关参数从管理后台获得,注意signName就是在短信服务后台申请的签名名称。

获取accessKeyId,accessKeySecret的方法请参考/knowledge_detail/38738.html(实际上进入控制台点击用户名即可看到)

代理器均衡调度

在config/phpsms.php中设置代理器的均衡调度方案。

'scheme' => [ //被使用概率为2/3 'Luosimao' => '20', //被使用概率为1/3,且为备用代理器 'YunPian' => '10 backup', //仅为备用代理器 'YunTongXun' => '0 backup',];

调度方案解析:如果按照以上配置,那么系统首次会尝试使用LuosimaoYunPian发送短信,且它们被使用的概率分别为2/31/3。 如果使用其中一个代理器发送失败,那么会启用备用代理器,按照配置可知备用代理器有YunPianYunTongXun,那么会依次调用直到发送成功或无备用代理器可用。 值得注意的是,如果首次尝试的是YunPian,那么备用代理器将会只会使用YunTongXun,也就是会排除使用过的代理器。

如果只使用阿里云短信服务,设置如下

发送前数据验证(没有特殊要求的话使用默认设置就好了,不做详细解释了)

如果需要再去自己看说明及测试。

验证码模块

1. [服务器端]配置短信内容/模板

阿里云使用的是模板ID

模版id

如果你使用了模板短信,需要配置到使用到的代理器的模板标示符。

配置文件为config/laravel-sms.php

'templates' => [ 'YunTongXun' => '短信模版id', 'Alidayu' => ['短信模版id', '语音模版id'],]

具体配置如下

需要到控制台中找短信模板ID

2. [浏览器端]请求发送验证码短信

laravel-sms.js

文件放入公共目录,并在使用验证码文件中引入

<script src="/path/to/laravel-sms.js"></script>

为发送按钮添加扩展方法

<script>$('#sendVerifySmsButton').sms({//laravel csrf token token : "{{csrf_token()}}", //请求间隔时间 interval : 60, //请求参数 requestData : {//手机号 mobile : function () {return $('input[name=mobile]').val(); }, //手机号的检测规则 mobile_rule : 'mobile_required' }});</script>

3. [服务器端]合法性验证(根据需要验证,此处不做详解)

数据库日志

生成数据表

在根目录下运行如下命令在数据库中生成laravel_sms表。(数据库中会新生成一张表laravel_sms表)

php artisan migrate

2. 开启权限

在配置文件config/laravel-sms.php中设置dbLogstrue

'dbLogs' => true,

短信队列(本文为了实现基础功能,此处先不做详解)

其它不影响基本功能的实现,先不详细解释。此时返回前端,点击发送验证码,手机就可以收到验证码了,在后台写相应逻辑。

遇到错误 Class 'Toplan\PhpSms\PhpSmsServiceProvider' not found

解决方法:在本地测试可能不会出现这样的问题,上线就会出现这样的问题,推论:1少相关文件2权限问题。最后发现一些执行php artisan命令产生的一些文件没有添加到svn控制中去,添加,然后再产生的service.php文件所在目录权限有点问题,修改为777,问题解决。

遇到错误,总是提示验证码错误请重新发送

解决方法:使用不同的阿里云短信服务账号,一个是正常的,一个总是错误,判断程序没有什么问题,应该是修改的三个参数

Access Key ID Access Key Secret

'templates' => ['Aliyun' => '',],

其中之一有问题,后来发现此扩展包验证码用的变量code而模板中用了number,重新申请模板,问题解决。

参考文章:

https://laravel-/topics/1612/laravel-sms-v2-new-reconstruction-from

/packages/toplan/phpsms

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。