Laravel SMS:构建短信验证码发送与验证的实战教程

0 下载量 165 浏览量 更新于2024-08-31 收藏 79KB PDF 举报
本文将详细介绍如何在 Laravel 项目中利用 laravel-sms 包构建短信验证码发送和校验功能,以提升用户体验并简化开发流程。laravel-sms 是一个流行的 Laravel 发送短信服务扩展,它支持多种短信服务商,如本文所选用的云片。 首先,确保你的 Laravel 版本为 5.5 或以上,并已安装 ApiStarterKit 和 laravel-sms 版本至少为 2.6。在安装过程中,建议在终端中使用 Composer 进行管理。在项目根目录下,执行以下命令: 1. 使用 Composer 安装 laravel-sms: ``` composer require toplan/laravel-sms:~2.6 ``` 或在 `composer.json` 的 `require` 字段中添加依赖: ```json { "require": { "toplan/laravel-sms": "2.6" } } ``` 然后运行: ``` composer update ``` 2. 配置 Laravel:在 `config/app.php` 文件中,将 Toplan 的短信服务提供者添加到 `providers` 数组中: ```php Toplan\PhpSms\PhpSmsServiceProvider::class, Toplan\Sms\SmsManagerServiceProvider::class, ``` 同时,在 `aliases` 数组中添加对应的 Facades: ```php 'PhpSms' => Toplan\PhpSms\Facades\Sms::class, 'SmsManager' => Toplan\Sms\Facades\SmsManager::class, ``` 接下来,为了发送短信验证码,你需要设置短信服务提供商的配置,通常包括 API 密钥和发送号码。以云片为例,你可以创建一个配置文件 `config/phpsms.php`,填写相应的配置信息: ```php <?php return [ 'default' => env('SMS_DEFAULT_DRIVER', 'cloudapi'), // 设置默认驱动,如云片 'drivers' => [ 'cloudapi' => [ 'key' => env('CLOUDPIECE_API_KEY'), // 云片 API Key 'secret' => env('CLOUDPIECE_API_SECRET'), // 云片 API Secret 'sender' => env('SMS_SENDER_PHONE_NUMBER'), // 发送号码 ], // 其他驱动,如其他服务商的配置 ], ]; ``` 确保在 .env 文件中设置了相应的环境变量。 现在,你可以创建一个控制器或服务类来发送验证码,示例如下: ```php use Toplan\PhpSms\Facades\Sms; public function sendVerificationCode(Request $request) { $phone = $request->input('phone'); $code = Str::random(6); // 生成6位验证码 Sms::send('your_template_name', compact('phone', 'code')); // 使用预定义模板发送验证码 // 存储验证码到数据库或 session,以便后续验证 // ... return response()->json(['success' => true, 'message' => '验证码已发送']); } ``` 对于验证码的验证,可以在接收用户输入的验证码后,与数据库或 session 中存储的验证码进行比对: ```php public function verifyCode(Request $request) { $phone = $request->input('phone'); $enteredCode = $request->input('entered_code'); $storedCode = \Cache::get('verification_code:'.$phone); // 从缓存获取验证码 if ($enteredCode === $storedCode) { // 验证成功,清除缓存并返回响应 Cache::forget('verification_code:'.$phone); return response()->json(['success' => true, 'message' => '验证码正确']); } else { // 验证失败,返回错误信息 return response()->json(['success' => false, 'message' => '验证码错误']); } } ``` 以上就是使用 laravel-sms 在 Laravel 项目中构建短信验证码发送和校验功能的基本步骤。通过这些操作,你可以简化短信服务的集成,并为用户提供更高效的身份验证体验。务必根据实际项目需求调整代码细节,以满足安全性和可扩展性要求。