好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 使用 laravel sms 構建短信驗證碼發送校驗功能

使用 laravel sms 構建短信驗證碼發送校驗功能

熱門標簽:周口網絡回撥外呼系統 隨州銷售電銷機器人公司 400電話申請辦理 福建高頻外呼防封系統哪家好 全國各省地圖標注點 外呼系統人工客服 網絡電話400申請 百度地圖標注類型是酒店 商丘外呼系統好處

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 或負數則不啟用
],

設置驗證碼內容短信。

'content' => function ($code, $minutes, $input) {
 return "您的驗證碼是:{$code} ({$minutes}分鐘內有效,如非本人操作,請忽略)";
},
'content' => function ($code, $minutes, $input) {
 return "您的驗證碼是:{$code} ({$minutes}分鐘內有效,如非本人操作,請忽略)";
},

如果有需要,可以開啟數據庫日志。需要提前運行 php artisan migrate 生成 laravel_sms 表。

'dbLogs' => 'ture',
'dbLogs' => 'ture',

 API 實現

在 app/Utils 下新建 SmsCodeUtil.php,并在里面實現驗證碼發送和校驗功能。這樣其他類可以隨時調用,提高代碼的復用性。

發送模塊

發送前需要對手機號進行校驗,包括:

validateSendable() :驗證是否滿足發送間隔 
validateFields() :驗證數據合法性

通過驗證后,再使用 requestVerifySms() 發送驗證碼。

具體代碼如下:

use SmsManager;
trait SmsCodeUtil {
 public function sendSmsCode()
 {
 $result = SmsManager::validateSendable();
 if(!$result['success']) {
  return respondUnprocessable($result['message']);
 }
 $result = SmsManager::validateFields();
 if(!$result['success']) {
  return respondUnprocessable($result['message']);
 }
 $result = SmsManager::requestVerifySms();
 if(!$result['success']) {
  return respondUnprocessable($result['message']);
 }
 return respondSuccess($result['message']);
 }
}

use SmsManager;
trait SmsCodeUtil {
 public function sendSmsCode()
 {
 $result = SmsManager::validateSendable();
 if(!$result['success']) {
  return respondUnprocessable($result['message']);
 }
 $result = SmsManager::validateFields();
 if(!$result['success']) {
  return respondUnprocessable($result['message']);
 }
 $result = SmsManager::requestVerifySms();
 if(!$result['success']) {
  return respondUnprocessable($result['message']);
 }
 return respondSuccess($result['message']);
 }
}

校驗模塊

登入時,可能需要校驗手機號和驗證碼。所以需要在 SmsCodeUtil.php 中添加驗證碼校驗功能。這里官方 Github 上已經給出了代碼,稍作修改即可。

public function validateSmsCode()
{
 //驗證數據
 $validator = Validator::make(inputAll(), [
 'phone_number' => 'required|confirm_mobile_not_change|confirm_rule:mobile_required',
 'sms_code'  => 'required|verify_code',
 ]);

 if ($validator->fails()) {
 //驗證失敗后建議清空存儲的發送狀態,防止用戶重復試錯
 SmsManager::forgetState();
 respondUnprocessable(formatValidationErrors($validator));
 }
}
public function validateSmsCode()
{
 //驗證數據
 $validator = Validator::make(inputAll(), [
 'phone_number' => 'required|confirm_mobile_not_change|confirm_rule:mobile_required',
 'sms_code'  => 'required|verify_code',
 ]);
 if ($validator->fails()) {
 //驗證失敗后建議清空存儲的發送狀態,防止用戶重復試錯
 SmsManager::forgetState();
 respondUnprocessable(formatValidationErrors($validator));
 }
}

功能測試

接下來配置路由和控制器,測試下功能是否正常。

可以同時打開 host-domain/laravel-sms/info 查看驗證碼短信發送和校驗狀態。

若啟用了數據庫日志,可以在 laravel_sms 表中查看短信發送結果的詳細信息。

先在 api.php 中添加:

$api->post('/auth/send-sms-code', 'Auth\LoginController@sendSmsCode');
$api->post('/auth/validate-sms-code', 'Auth\LoginController@validateSmsCode');
$api->post('/auth/send-sms-code', 'Auth\LoginController@sendSmsCode');
$api->post('/auth/validate-sms-code', 'Auth\LoginController@validateSmsCode');

再在 LoginController.php 中添加:

use App\Utils\SmsCodeUtil;
class LoginController extends Controller {
 use SmsCodeUtil;
 ...
}
use App\Utils\SmsCodeUtil;
class LoginController extends Controller {
 use SmsCodeUtil;
 
 ...
}

然后使用 Postman 或其他類似工具測試 Api 功能。

發送驗證碼 

POST 服務器地址/api/auth/send-sms-code
{
  "phone_number": "手機號"
}
POST 服務器地址/api/auth/send-sms-code
{
  "phone_number": "手機號"
}

若通過驗證并發送成功,則會返回:

{
  "message": "短信驗證碼發送成功,請注意查收",
  "status_code": 200
}
{
  "message": "短信驗證碼發送成功,請注意查收",
  "status_code": 200
}

同時填寫的手機號接受到驗證碼。

若驗證失敗或發送失敗,則會返回對應的錯誤信息。

校驗驗證碼

POST 服務器地址/api/auth/validate-sms-code
{
  "phone_number": "手機號",
  "sms_code": "驗證碼"
}

POST 服務器地址/api/auth/validate-sms-code
{
  "phone_number": "手機號",
  "sms_code": "驗證碼"
}

若通過驗證,則無返回。

若驗證失敗,則會返回對應的錯誤信息。

本地化提示信息語言

在 laravel-sms.php 中提供了部分提示信息的自定義。想要將剩余部分的提示信息轉換為本地語言,需要另行處理。

首先確保 config/app.php 中的語言設置正確。這里設置為 zh_cn。

'locale' => 'zh_cn',
'locale' => 'zh_cn', 

然后在 resources\lang\zh_cn 文件夾下新建 validation.php,并填入本地化信息:

return [
 'required' => '缺少:attribute參數',
 'zh_mobile'         => '非標準的中國大陸手機號',
 'confirm_mobile_not_change' => '提交的手機號已變更',
 'verify_code'        => '驗證碼不合法或無效',
 'attributes' => [
  'phone_number' => '手機號',
  'sms_code'  => '驗證碼',
 ],
];
return [
 'required' => '缺少:attribute參數',
 'zh_mobile'         => '非標準的中國大陸手機號',
 'confirm_mobile_not_change' => '提交的手機號已變更',
 'verify_code'        => '驗證碼不合法或無效',
 'attributes' => [
  'phone_number' => '手機號',
  'sms_code'  => '驗證碼',
 ],
];

重新 POST 相關地址,可以看到對應的提示信息語言已經本地化。

總結

以上所述是小編給大家介紹的使用 laravel-sms 構建短信驗證碼發送校驗模塊,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • Laravel5.2使用Captcha生成驗證碼實現登錄(session巨坑)
  • 用Laravel Sms實現laravel短信驗證碼的發送的實現
  • laravel中短信發送驗證碼的實現方法
  • Laravel下生成驗證碼的類
  • laravel5.4生成驗證碼的代碼
  • laravel5.4生成驗證碼的實例講解
  • Laravel8 使用圖形驗證碼做登錄功能的實現

標簽:六安 十堰 南寧 佛山 迪慶 海南 樂山 定西

巨人網絡通訊聲明:本文標題《使用 laravel sms 構建短信驗證碼發送校驗功能》,本文關鍵詞  使用,laravel,sms,構建,短信,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用 laravel sms 構建短信驗證碼發送校驗功能》相關的同類信息!
  • 本頁收集關于使用 laravel sms 構建短信驗證碼發送校驗功能的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 欧美zoosex| 无限看片直播| 曹留社区2025年一二三四五六七八| 国产一区二区三区美腿丝袜| 《人妻在夫旁被按摩师侵犯》| 欧美图片小说| 郑厅长玩韩蕊第一次| 国产又粗又猛又色又黃视频| 情不自禁在线观看免费完整版| 杂伦大乱烩H高小说| 国产色婷婷AV麻豆天美视频| 国产huangpian视频免费| 西顿学园在线观看无删减| 韩国xxxxx视频在线| 国产一级久久久久久毛片| 黑人操大逼| 播播影院12306影视在线| 秋霞电影网日韩| 宅男噜噜66国产精品观看| h在线看免费视频网站男男| 亚洲欧洲日韩天堂无吗| 国内视频一区二区三区| 成人国内精品久久久久影院| 偷看邻居做爰过程| 武宁县| 精品国产自在精品国产精9977 | 88xx成人永久免费观看| 军婚滴着奶水做着爱| 999久久久成人A片展示下载| 变态扒了美女内裤摸她的隐私| 理伦片琪琪午夜精品| 亲胸揉胸膜下刺激免费| 宝贝你下面好多水| 浪货你夹的我好紧h| 新第三荷包高h肉辣文| 顶级欧美熟妇XXOOHD| 一级A性色生活片久久看| 黑料社在线观看入口| 八戒八戒最新免费www视频| 真实偷人视频在线观看| 国产AV精品三级视频播放|