laravel5.4使用Laravel Sms和阿里云短信服务实现短信验证码功能
laravel 實現(xiàn)短信驗證碼功能,搜索資料發(fā)現(xiàn)比較流行的有兩個包:
一個是laravel sms 地址 ?https://github.com/toplan/laravel-sms?
一個是easy sms 地址https://github.com/overtrue/easy-sms,
經(jīng)過比較還是選擇lara sms
按照guthub readme進行
安裝:
在項目根目錄下運行如下composer命令:(如果沒有安裝composer請先安裝composer)
//推薦(博主使用的推薦選項) composer require toplan/laravel-sms:~2.6 準備工作1.注冊服務提供器
在config/app.php文件中providers數(shù)組里加入:
Toplan\PhpSms\PhpSmsServiceProvider::class, Toplan\Sms\SmsManagerServiceProvider::class,在config/app.php文件中的aliases數(shù)組里加入
'PhpSms' => Toplan\PhpSms\Facades\Sms::class, 'SmsManager' => Toplan\Sms\Facades\SmsManager::class,2.參數(shù)配置
- 生成配置文件和migration文件,分別在根目錄執(zhí)行下面兩條命令
這里會在config文件夾中生成兩個配置文件,分別為phpsms.php和laravel-sms.php。database中生成migrations
- 配置代理器參數(shù)
在config/phpsms.php的agents數(shù)組中,找到你想要使用的代理器,并填寫好配置信息。(注意阿里云的短信服務和阿里大魚不是一個東西,不要弄混了)
博主選用的阿里云的短信服務,此處配置如下
主要是修改參數(shù),阿里云短信服務,相關參數(shù)從管理后臺獲得,注意signName就是在短信服務后臺申請的簽名名稱。
獲取accessKeyId,accessKeySecret的方法請參考https://help.aliyun.com/knowledge_detail/38738.html(實際上進入控制臺點擊用戶名即可看到)
- 代理器均衡調度
在config/phpsms.php中設置代理器的均衡調度方案。
'scheme' => [ //被使用概率為2/3 'Luosimao' => '20', //被使用概率為1/3,且為備用代理器 'YunPian' => '10 backup', //僅為備用代理器 'YunTongXun' => '0 backup', ]; 調度方案解析:?如果按照以上配置,那么系統(tǒng)首次會嘗試使用Luosimao或YunPian發(fā)送短信,且它們被使用的概率分別為2/3和1/3。 如果使用其中一個代理器發(fā)送失敗,那么會啟用備用代理器,按照配置可知備用代理器有YunPian和YunTongXun,那么會依次調用直到發(fā)送成功或無備用代理器可用。 值得注意的是,如果首次嘗試的是YunPian,那么備用代理器將會只會使用YunTongXun,也就是會排除使用過的代理器。 如果只使用阿里云短信服務,設置如下發(fā)送前數(shù)據(jù)驗證(沒有特殊要求的話使用默認設置就好了,不做詳細解釋了)
如果需要再去自己看說明及測試。驗證碼模塊
1. [服務器端]配置短信內容/模板
阿里云使用的是模板ID模版id
如果你使用了模板短信,需要配置到使用到的代理器的模板標示符。
配置文件為config/laravel-sms.php
'templates' => [ 'YunTongXun' => '短信模版id', 'Alidayu' => ['短信模版id', '語音模版id'], ]具體配置如下需要到控制臺中找短信模板ID
2. [瀏覽器端]請求發(fā)送驗證碼短信
將laravel-sms.js文件放入公共目錄,并在使用驗證碼文件中引入<script src="/path/to/laravel-sms.js"></script>為發(fā)送按鈕添加擴展方法 <script> $('#sendVerifySmsButton').sms({ //laravel csrf token token : "{{csrf_token()}}", //請求間隔時間 interval : 60, //請求參數(shù) requestData : { //手機號 mobile : function () { return $('input[name=mobile]').val(); }, //手機號的檢測規(guī)則 mobile_rule : 'mobile_required' } }); </script>3. [服務器端]合法性驗證(根據(jù)需要驗證,此處不做詳解)
數(shù)據(jù)庫日志
生成數(shù)據(jù)表
在根目錄下運行如下命令在數(shù)據(jù)庫中生成laravel_sms表。(數(shù)據(jù)庫中會新生成一張表laravel_sms表)
php artisan migrate2. 開啟權限
在配置文件config/laravel-sms.php中設置dbLogs為true。
'dbLogs' => true,短信隊列(本文為了實現(xiàn)基礎功能,此處先不做詳解)
其它不影響基本功能的實現(xiàn),先不詳細解釋。此時返回前端,點擊發(fā)送驗證碼,手機就可以收到驗證碼了,在后臺寫相應邏輯。遇到錯誤 Class 'Toplan\PhpSms\PhpSmsServiceProvider' not found
解決方法:在本地測試可能不會出現(xiàn)這樣的問題,上線就會出現(xiàn)這樣的問題,推論:1少相關文件2權限問題。最后發(fā)現(xiàn)一些執(zhí)行php artisan命令產生的一些文件沒有添加到svn控制中去,添加,然后再產生的service.php文件所在目錄權限有點問題,修改為777,問題解決。
遇到錯誤,總是提示驗證碼錯誤請重新發(fā)送解決方法:使用不同的阿里云短信服務賬號,一個是正常的,一個總是錯誤,判斷程序沒有什么問題,應該是修改的三個參數(shù)Access Key ID? Access Key Secret 'templates' => ['Aliyun' ? ?=> '',], 其中之一有問題,后來發(fā)現(xiàn)此擴展包驗證碼用的變量code而模板中用了number,重新申請模板,問題解決。
參考文章:https://laravel-china.org/topics/1612/laravel-sms-v2-new-reconstruction-from
https://packagist.org/packages/toplan/phpsms
總結
以上是生活随笔為你收集整理的laravel5.4使用Laravel Sms和阿里云短信服务实现短信验证码功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MVC路由自定义及视图找寻规则
- 下一篇: Angular Router的组件路由介