laravel 实现短信验证码功能,搜索资料发现比较流行的有两个包:
一个 laravel sms,一个是easy sms
项目中需要实现一个发送和验证短信验证码的功能。原生办法稍显繁琐,不同平台需要用不同方法,2个扩展包都可以,先用的laravel sms,发现步骤较为多,比easy sms的收藏数也少很多,侧面说明easy sms比较流行。
从github上文档很详细,直接先通过composer安装:
$ composer require "overtrue/easy-sms"
注:低于 Laravel5.5 版本在config/app.php 文件中 ‘providers’ 添加
iBrand\Sms\ServiceProvder::class
config/app.php 文件中 ‘aliases’ 添加
'Sms'=> iBrand\Sms\Facade::class
设置就完成了,方便快捷直接使用,用的是官网给的例子作为分析,因为我只有阿里云所以不考虑复杂用法,网关用的是哪个就用哪个,比如阿里云就只有’access_key_id’、 ‘access_key_secret’ 、 ‘sign_name’ 、三个值就行,阿里云设置点这里,阿里云开通短信服务,你可以自己写个公共方法封装下,封装方法点这里,封装方法
use Overtrue\EasySms\EasySms;
$config = [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'yunpian', 'aliyun',
],
],
// 可用的网关配置
'gateways' => [
'errorlog' => [
'file' => '/tmp/easy-sms.log',
],
'yunpian' => [
'api_key' => '824f0ff2f71cab52936axxxxxxxxxx',
],
'aliyun' => [
'access_key_id' => '',
'access_key_secret' => '',
'sign_name' => '',
],
//...
],
];
$easySms = new EasySms($config);
$easySms->send(13188888888, [
'content' => '您的验证码为: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
]);
完成,传对应code就行。