[干货] Laravel 对接阿里云 SMS 发送短信验证码
本案例采用Laravel5.6对接阿里云SMS发送短信验证码,【全干货】,按步骤操作即可完成。
在部署环境之前,我们需要去阿里云平台注册一个账号,个人账号和公司账号都可以,注册完成后,复制access_key和access_secret配置在项目中就完成了项目的基本设置。
一. 新建项目,安装Laravel5.6版本的框架代码
1. 环境配置要求
Laravel 对系统有一些要求,您的服务器满足下面的要求:
PHP >= 7.1.3
OpenSSL PHP
PHP PDO 扩展
PHP Mbstring 扩展
PHP Tokenizer 扩展
PHP XML 扩展
PHP Ctype 扩展
PHP JSON 扩展
备注:您需要达到以上的配置要求,这个就不具体详细说明,具体看PHP语法
2. 安装Laravel5.6框架
Laravel5.6使用 Composer 来管理项目依赖。因此,在使用 Laravel5.6之前,请确保你的机器已经安装了 Composer。
composer -v
// 未安装composer,请参照以下网址安装https://www.phpcomposer.com/
备注:composer具体安装请参照上面链接,按文档安装即可.
下面我们具体安装Larvael5.6框架,在控制窗口输入一下内容(本人windows操作系统),等待安装完成。
composer create-project --prefer-dist laravel/laravel blog
安装完成后执行以下代码,为应用程序设置随机字符串密钥。
php artisan key:generate
在浏览器中输入:http://localhost/blog/public/index.php
,看到如下界面就是访问正常了。
3. composer.json配置阿里云组件包
在require
中添加"mrgoon/aliyun-sms": "dev-master"
“require”: {
“php”: “^7.1.3”,
“fideloper/proxy”: “^4.0”,
“laravel/framework”: “5.8.*”,
“laravel/tinker”: “^1.0”,
"mrgoon/aliyun-sms": "dev-master"
}
然后执行命令:
composer update
composer dumpautoload
组件下载完成后,如下图:
里面已经有阿里云的SDK包了,配置文件也生成了。
4、开通短信服务
1、登录阿里云网站,点击短信服务,进入开通。
2、点击国内消息
3、添加签名
4、添加模板
5. 配置阿里云access_key和access_secret配置
这里很关键:我的是单独写了一个文件进行配置
第一步:在config/app.php
的providers
下添加:
'providers' => [Mrgoon\AliSms\ServiceProvider::class,],
第二步:在app/aliyunsms.php
中添加配置:
return [
'access_key' => env('ALIYUN_SMS_AK', '填你自己的'),
'access_secret' => env('ALIYUN_SMS_AS', '填你自己的'),
],
第三步:在.env文件中配置常量
ALIYUN_ACCESSKEYID=填你自己的
文件就已经配置完成。
二. 编写接口控制器方法
新建控制器:UploadsController
继承 Controller
类,方便操作。
第一步:编写API路由
Route::post('/index/sendsms', '\App\Http\Controllers\Index\SmsController@index');
第二步:编写控制器,发送短信(核心代码)
<?php
namespace App\Http\Controllers\Index;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class SmsController extends Controller {
public function index(Request $request) {
if (!is_mobile($request->mobile)) {
return array_format('手机号格式错误', 414);
}
//发送过快验证
$repeat_cache_key = md5($request->mobile . $request->type . 'repeat');
if (cache()->store('file')->has($repeat_cache_key)) {
return array_format('发送过快,请稍后再试', 414);
}
$mobile_code = rand_num(6);
$sms = new \AliSms();
$temp = $sms->sendSms($request->mobile, '填你自己的', ['code'=> $mobile_code]);
if (!$temp) {
return array_format('发送短信失败', 414);
}
//缓存验证码
$cache_key = md5($request->mobile);
cache()->store('file')->put($cache_key, $mobile_code, 5);
cache()->store('file')->put($repeat_cache_key, $mobile_code, 0.1);
return array_format('发送成功', 200);
}
}
. Postman工具接口测试
了解更多干货知识请关注公众号(Laravel技术社区)
本作品采用《CC 协议》,转载必须注明作者和本文链接
的确是干货,支持!已关注公众号 :blush:
赞,好文章,学习了!
没用
is_mobile()方法是laravel 自带的吗