设置验证码内容短信。
'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": "手机号"
}
laravel ORM 只开启created_at的几种方法总结下面小编就为大家分享一篇laravel ORM 只开启created_at的几种方法总结,具有很好的参考价值,希望对大家有所帮助。一
通过源码解析Laravel的依赖注入这篇文章主要给大家介绍了如何通过源码解析Laravel的依赖注入的相关资料,文中通过示例代码介绍的非常详细,对大
Laravel中unique和exists验证规则的优化详解这篇文章主要给大家介绍了关于Laravel中unique和exists验证规则的优化的相关资料,文中通过示例代码介绍的非常详细,
Laravel 5.5基于内置的Auth模块实现前后台登陆详解最近在使用laravel5.5,利用其实现了一个功能,下面分享给大家,这篇文章主要给大家介绍了关于Laravel 5.5基于内置的
源码分析 Laravel 重复执行同一个队列任务的原因laravel 的队列服务对各种不同的后台队列服务提供了统一的 API,下面这篇文章通过源码分析给大家介绍了关于 Larave
关于 Laravel Redis 多个进程同时取队列问题详解这篇文章主要给大家介绍了关于 Laravel Redis 多个进程同时取队列问题的相关资料,文中通过示例代码介绍的非常详细