laravel sms를 사용하여 인증을 위한 SMS 인증코드 전송 기능을 구축합니다.
이 글에서는 laravel-sms를 사용하여 샘플 코드를 통해 SMS 인증 코드 전송 확인 모듈을 구축하는 방법을 소개합니다. 매우 훌륭하고 참고할 만한 가치가 있습니다.
laravel은 SMS 인증 코드 기능을 구현합니다. . 정보를 검색해 보니 더 인기가 많더군요. 두 가지 패키지가 있습니다.
하나는 laravel SMS 주소 https://github.com/toplan/laravel-sms
하나는 easy SMS 주소 https://github입니다. com/overtrue/easy-sms,
본 프로젝트는 SMS 인증 코드 전송 및 확인 기능을 구현해야 합니다. 이전 방법은 좀 번거로웠어요. 전문가의 조언에 따라 laravel-sms 패키지를 대신 사용할 수 있다는 것을 알았습니다. 구성 및 사용이 쉽습니다. 따라서 이 예는 다음과 같습니다.
이 예제에서는 Laravel 5.5, Api Starter Kit 및 Laravel Sms 2.6을 사용합니다.
이 예시에 사용된 SMS 서비스 제공업체는 Yunpian입니다.
Installation
프로젝트 루트 디렉터리에서 실행(권장):
composer require toplan/laravel-sms:~2.6 composer require toplan/laravel-sms:~2.6
composer.json의 필수 필드에 추가할 수도 있습니다:
"toplan/laravel-sms": "2.6" "toplan/laravel-sms": "2.6"
그런 다음 프로젝트에서 루트 디렉터리 실행:
composer update composer update
config/app.php의 공급자 배열에
Toplan\PhpSms\PhpSmsServiceProvider::class, Toplan\Sms\SmsManagerServiceProvider::class, Toplan\PhpSms\PhpSmsServiceProvider::class, Toplan\Sms\SmsManagerServiceProvider::class,
을 추가하고 별칭 배열에
'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에서 구성할 수 있습니다.
동시에 2015_12_21_111514_create_sms_table.php 파일이 데이터베이스 마이그레이션에 복사됩니다. laravel_sms 테이블을 생성하는 데 사용됩니다.
Configuration
여기서는 Yun Pian만을 예로 들어보겠습니다.
phpsms.php를 구성하세요
phpsms.php의 agnets 배열에 클라우드 슬라이스의 프록시 정보를 설정하세요.
'YunPian' => [ //用户唯一标识,必须 'apikey' => '在这里填写你的 APIKEY', ], 'YunPian' => [ //用户唯一标识,必须 'apikey' => '在这里填写你的 APIKEY', ],
구성표 배열을 설정하고 균형 잡힌 스케줄링 구성표를 구성하세요.
'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 或负数则不启用 ],
인증 코드 내용 SMS를 설정하세요.
'content' => function ($code, $minutes, $input) { return "您的验证码是:{$code} ({$minutes}分钟内有效,如非本人操作,请忽略)"; }, 'content' => function ($code, $minutes, $input) { return "您的验证码是:{$code} ({$minutes}分钟内有效,如非本人操作,请忽略)"; },
필요한 경우 데이터베이스 로그를 활성화할 수 있습니다. laravel_sms 테이블을 생성하려면 php artisan migration을 미리 실행해야 합니다.
'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)); } }
Functional Test
다음으로 라우팅과 컨트롤러를 설정하고 기능이 정상인지 테스트합니다.
동시에 열 수 있습니다. host-domain/laravel-sms/info
인증 코드 SMS 발송 및 인증 상태를 확인하세요.
데이터베이스 로그가 활성화된 경우 laravel_sms 테이블에서 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 相关地址,可以看到对应的提示信息语言已经本地化。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Laravel5.2使用Captcha生成验证码实现登录的方法
위 내용은 laravel sms를 사용하여 인증을 위한 SMS 인증코드 전송 기능을 구축합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel 9 및 CodeIgniter 4의 최신 버전은 업데이트된 기능과 개선 사항을 제공합니다. Laravel9은 MVC 아키텍처를 채택하여 데이터베이스 마이그레이션, 인증, 템플릿 엔진 등의 기능을 제공합니다. CodeIgniter4는 HMVC 아키텍처를 사용하여 라우팅, ORM 및 캐싱을 제공합니다. 성능면에서는 Laravel9의 서비스 제공자 기반 디자인 패턴과 CodeIgniter4의 경량 프레임워크가 뛰어난 성능을 제공합니다. 실제 애플리케이션에서 Laravel9은 유연성과 강력한 기능이 필요한 복잡한 프로젝트에 적합한 반면, CodeIgniter4는 빠른 개발 및 소규모 애플리케이션에 적합합니다.

Laravel과 CodeIgniter의 데이터 처리 기능을 비교해 보세요. ORM: Laravel은 클래스-객체 관계형 매핑을 제공하는 EloquentORM을 사용하는 반면, CodeIgniter는 데이터베이스 모델을 PHP 클래스의 하위 클래스로 표현하기 위해 ActiveRecord를 사용합니다. 쿼리 빌더: Laravel에는 유연한 체인 쿼리 API가 있는 반면, CodeIgniter의 쿼리 빌더는 더 간단하고 배열 기반입니다. 데이터 검증: Laravel은 사용자 정의 검증 규칙을 지원하는 Validator 클래스를 제공하는 반면, CodeIgniter는 내장된 검증 기능이 적고 사용자 정의 규칙을 수동으로 코딩해야 합니다. 실제 사례: 사용자 등록 예시에서는 Lar를 보여줍니다.

초보자의 경우 CodeIgniter는 학습 곡선이 더 완만하고 기능이 적지만 기본적인 요구 사항을 충족합니다. Laravel은 더 넓은 기능 세트를 제공하지만 학습 곡선이 약간 더 가파릅니다. 성능면에서는 Laravel과 CodeIgniter 모두 좋은 성능을 보입니다. Laravel은 보다 광범위한 문서와 적극적인 커뮤니티 지원을 제공하는 반면 CodeIgniter는 더 간단하고 가벼우며 강력한 보안 기능을 갖추고 있습니다. 블로그 애플리케이션을 구축하는 실제 사례에서 Laravel의 EloquentORM은 데이터 조작을 단순화하는 반면 CodeIgniter는 더 많은 수동 구성이 필요합니다.

대규모 프로젝트를 위한 프레임워크를 선택할 때 Laravel과 CodeIgniter는 각각 고유한 장점을 가지고 있습니다. Laravel은 엔터프라이즈급 애플리케이션을 위해 설계되었으며 모듈식 디자인, 종속성 주입 및 강력한 기능 세트를 제공합니다. CodeIgniter는 속도와 사용 편의성을 강조하여 중소 규모 프로젝트에 더 적합한 경량 프레임워크입니다. 요구 사항이 복잡하고 사용자 수가 많은 대규모 프로젝트의 경우 Laravel의 성능과 확장성이 더 적합합니다. 간단한 프로젝트나 리소스가 제한된 상황에서는 CodeIgniter의 가볍고 빠른 개발 기능이 더 이상적입니다.

Laravel - Artisan Commands - Laravel 5.7은 새로운 명령을 처리하고 테스트하는 새로운 방법을 제공합니다. 여기에는 장인 명령을 테스트하는 새로운 기능이 포함되어 있으며 데모는 아래에 언급되어 있습니다.

소규모 프로젝트의 경우 Laravel은 강력한 기능과 보안이 필요한 대규모 프로젝트에 적합합니다. CodeIgniter는 가볍고 사용하기 쉬운 매우 작은 프로젝트에 적합합니다.

Laravel의 Blade와 CodeIgniter의 Twig 템플릿 엔진을 비교해 보면 프로젝트 요구 사항과 개인 선호도에 따라 선택하십시오. Blade는 MVC 구문을 기반으로 하므로 좋은 코드 구성과 템플릿 상속을 장려합니다. Twig는 유연한 구문, 강력한 필터, 확장된 지원 및 보안 샌드박스를 제공하는 타사 라이브러리입니다.

Laravel - 페이지 매김 사용자 정의 - Laravel에는 사용자나 개발자가 페이지 매김 기능을 포함하는 데 도움이 되는 페이지 매김 기능이 포함되어 있습니다. Laravel 페이지네이터는 쿼리 빌더 및 Eloquent ORM과 통합되어 있습니다. 자동 페이지 매김 방법
