laravel 實現短信驗證碼功能,搜索資料發現比較流行的有兩個包:
一個是laravel sms 地址 https://github.com/toplan/laravel-sms
一個是easy sms 地址https://github.com/overtrue/easy-sms,
項目中需要實現一個發送和驗證短信驗證碼的功能。以前的辦法稍顯繁瑣。經高人指點,發現可以用 laravel-sms 這個包替代。且配置和使用簡單易學。故有了這篇示例。
本例使用了Laravel 5.5、 Api Starter Kit 以及 Laravel Sms 2.6。
本例使用的短信服務商為云片。
安裝
在項目根目錄下執行(推薦):
composer require toplan/laravel-sms:~2.6 composer require toplan/laravel-sms:~2.6
也可以在 composer.json 的 require 字段中添加:
"toplan/laravel-sms": "2.6" "toplan/laravel-sms": "2.6"
然后在項目根目錄下執行:
composer update composer update
在 config/app.php 的 providers 數組中添加:
Toplan\PhpSms\PhpSmsServiceProvider::class, Toplan\Sms\SmsManagerServiceProvider::class, Toplan\PhpSms\PhpSmsServiceProvider::class, Toplan\Sms\SmsManagerServiceProvider::class,
并在 aliases 數組里添加:
'PhpSms' => Toplan\PhpSms\Facades\Sms::class, 'SmsManager' => Toplan\Sms\Facades\SmsManager::class, 'PhpSms' => Toplan\PhpSms\Facades\Sms::class, 'SmsManager' => Toplan\Sms\Facades\SmsManager::class,
在項目根目錄下執行:
php artisan vendor:publish --provider="Toplan\PhpSms\PhpSmsServiceProvider" php artisan vendor:publish --provider="Toplan\Sms\SmsManagerServiceProvider" php artisan vendor:publish --provider="Toplan\PhpSms\PhpSmsServiceProvider" php artisan vendor:publish --provider="Toplan\Sms\SmsManagerServiceProvider"
會在 config 文件夾中生成兩個配置文件:phpsms.php 和 laravel-sms.php。
在 phpsms.php 中可以配置代理器信息及均衡調度方案。
在 laravel-sms.php 中可以配置驗證碼的發送與驗證方案。
同時會向 database\migrations 中復制 2015_12_21_111514_create_sms_table.php 文件。用于生成 laravel_sms 表。
配置
這里僅以云片為例。
配置 phpsms.php
設置 phpsms.php 中 agnets 數組中云片的代理器信息。
'YunPian' => [ //用戶唯一標識,必須 'apikey' => '在這里填寫你的 APIKEY', ], 'YunPian' => [ //用戶唯一標識,必須 'apikey' => '在這里填寫你的 APIKEY', ],
設置 scheme 數組,配置均衡調度方案。
'scheme' => [ 'YunPian', ], 'scheme' => [ 'YunPian', ],
配置 laravel-sms.php
設置內置路由。
'route' => [ 'enable' => true, 'prefix' => 'laravel-sms', 'middleware' => ['api'], ], 'route' => [ 'enable' => true, 'prefix' => 'laravel-sms', 'middleware' => ['api'], ],
設置請求間隔,單位為秒。
'interval' => 60, 'interval' => 60,
設置號碼驗證規則。
'validation' => [ 'phone_number' => [ //需驗證的字段 'isMobile' => true, //本字段是否為手機號 'enable' => true, //是否需要驗證 'default' => 'mobile_required', //默認的靜態規則 'staticRules' => [ //全部靜態規則 'mobile_required' => 'required|zh_mobile', ], ], ], 'validation' => [ 'phone_number' => [ //需驗證的字段 'isMobile' => true, //本字段是否為手機號 'enable' => true, //是否需要驗證 'default' => 'mobile_required', //默認的靜態規則 'staticRules' => [ //全部靜態規則 'mobile_required' => 'required|zh_mobile', ], ], ],
設置驗證碼規則。
'code' => [ 'length' => 4, //驗證碼長度 'validMinutes' => 10, //驗證碼有效時間長度,單位為分鐘 'repeatIfValid' => true, //驗證碼有效期內是否重復使用 'maxAttempts' => 0, //驗證碼最大嘗試驗證次數,0 或負數則不啟用 ], 'code' => [ 'length' => 4, //驗證碼長度 'validMinutes' => 10, //驗證碼有效時間長度,單位為分鐘 'repeatIfValid' => true, //驗證碼有效期內是否重復使用 'maxAttempts' => 0, //驗證碼最大嘗試驗證次數,0 或負數則不啟用 ],