在做用户注册和个人中心的安全管理时,我实现借助第三方短信平台(阿里大于(鱼))在Laravel框架中进行手机验证的设置;阿里大于,是阿里通信旗下优质便捷的云通信服务平台,整合了三大运营商的通信能力,为开发者提供简洁易用的短信/语音API,三网合一通道,按需付费。
安装laravel阿里大于(鱼)服务
1
|
composer
require
iscms/alisms-
for
-laravel
|
注册服务(config/app.php)
在文件中找到Providers数组,写入
1
|
iscms/Alisms/AlidayuServiceProvider::
class
|
生成阿里大于(鱼)配置文件(config文件夹)
1
|
php artisan vendor:publish
|
修改阿里大于(鱼)配置文件(alisms.php)文件为:
1
2
3
4
5
|
<?php
return
[
'KEY'
=>env(
'ALISMS_KEY'
,null),
'SECRETKEY'
=>env(
'ALISMS_SECRETKEY'
,null)
];
|
laravel根目录下找到.env文件,把阿里大鱼的App key和配置成全局变量(http://www.alidayu.com/)
1
2
|
ALISMS_KEY=234*****3
ALISMS_SECRETKEY=****************
|
在您需要调用短信服务的控制器中,引用SMS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
use
iscms\Alisms\SendsmsPusher
as
Sms;
public
function
__construct(Sms
$sms
)
{
$this
->sms=
$sms
;
}
public
function
Alidayu(Request
$request
){
$phone
=
$request
->input(
'phone'
,
'1508*****55'
);
// 用户手机号,接收验证码
$name
=
'小张个人博客'
;
// 短信签名,可以在阿里大鱼的管理中心看到
$num
= rand(100000, 999999);
// 生成随机验证码
$smsParams
= [
'number'
=>
"$num"
];
$content
= json_encode(
$smsParams
);
// 转换成json格式的
$code
=
"SMS_63****73"
;
// 阿里大于(鱼)短信模板ID
$request
->session()->put(
'alidayu'
,
$num
);
// 存入session 后面做数据验证
$result
=
$this
->sms->send(
$phone
,
$name
,
$content
,
$code
);
echo
"验证码:"
.session(
'alidayu'
).
'<br/>'
;
if
(property_exists(
$request
,
'result'
)){
// 使用PHP函数json_encode方法将给定数组转化为JSON:
return
json_encode([
'ResultData'
=>
'成功'
,
'info'
=>
'已发送'
]);
}
else
{
return
json_encode([
'ResultData'
=>
'失败'
,
'info'
=>
'重复发送'
]);
}
|
参数说明:
$phone 手机号,用户输入的手机号
$name 短信签名,阿里大鱼申请的短信签名的名字
$content 替换短信模板中的变量,JSON字符串格式,所有值都是字符串,不能有整形
$code 阿里大鱼申请的短信模ID:SMS_39***4
阿里大于(鱼)短信模板(http://www.alidayu.com/)
1
2
3
|
模板名称: 身份验证
模板ID: SMS_39***4
*模板内容:验证码${code},您正在进行个人身份验证,打死不要告诉别人哦!
|
那么里面存在着变量${code}需要替换成验证码,那么对应的$content 就应该为{code:"生成的验证码,如:123456"}
到这里Laravel5使用阿里大于(鱼)发送短信验证码应该没有问题了,开始发送短信吧~ ^_^
alisms-for-laravel:https://packagist.org/packages/iscms/alisms-for-laravel