本案例採用Laravel5.6對接阿里雲SMS發送短信驗證碼,【全乾貨】,按步驟操作即可完成。
在部署環境之前,我們需要去阿里雲平臺註冊一個賬號,個人賬號和公司賬號都可以,註冊完成後,複製access_key和access_secret配置在項目中就完成了項目的基本設置。
一. 新建項目,安裝Laravel5.6版本的框架代碼
Laravel 對系統有一些要求,您的服務器滿足下面的要求:
-
PHP >= 7.1.3
-
OpenSSL PHP
-
PHP PDO 擴展
-
PHP Mbstring 擴展
-
PHP Tokenizer 擴展
-
PHP XML 擴展
-
PHP Ctype 擴展
-
PHP JSON 擴展
備註:您需要達到以上的配置要求,這個就不具體詳細說明,具體看PHP語法
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
,看到如下界面就是訪問正常了。
在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技術社區)