>백엔드 개발 >PHP 튜토리얼 >Laravel '표준'을 통한 SMS 인증코드 전송 기능 개발

Laravel '표준'을 통한 SMS 인증코드 전송 기능 개발

不言
不言원래의
2018-06-13 10:27:183431검색

Laravel은 간단하고 우아한 PHP 웹 개발 프레임워크(PHP 웹 프레임워크)입니다. 다음으로 이번 글을 통해 라라벨의 "표준" SMS 인증코드 전송 기능을 알려드리겠습니다. 필요하신 분들은 참고하시면 됩니다

라라벨 소개

라라벨은 심플하고 우아한 PHP 웹입니다. 개발 프레임워크(PHP 웹 프레임워크). 누들과 같은 지저분한 코드에서 벗어날 수 있으며 완벽한 네트워크 앱을 구축하는 데 도움이 될 수 있으며 모든 코드 줄은 간결하고 표현력이 뛰어납니다.

Laravel에는 이미 고급 PHP ActiveRecord 구현인 Eloquent ORM이 있습니다. 관계의 양쪽에 "제약"을 쉽게 적용할 수 있으므로 데이터를 완벽하게 제어하고 ActiveRecord의 모든 편리함을 누릴 수 있습니다. Eloquent는 Fluent의 쿼리 빌더(query-builder)의 모든 메소드를 기본적으로 지원합니다.

Laravel의 "표준" 개발 SMS 인증 코드 전송 기능 수요 시나리오

휴대폰이나 이메일로 보낼 수 있는 "인증 코드" 또는 "메시지 알림"을 ​​보냅니다.

Complete

우선 Laravel의 사양은 Laravel의 "메시지 알림"을 ​​사용하도록 되어 있는데, 여기서는 시나리오를 기반으로 한 "인증 코드"입니다. 이 요구 사항은 거의 모든 소프트웨어 시스템에서 사용됩니다.

알림 장면 만들기

첫 번째 단계는 php artisan make:notification을 사용하여 알림 클래스를 만드는 것입니다. 기본적으로 toMail과 toArray를 통한 세 가지 방법이 있습니다. 확인 코드가 전송되면 제가 하겠습니다. 이 컨트롤 클래스의 이름은 VerificationCode입니다.

그런 다음 인증 코드 데이터 모델을 생성하고 데이터 테이블 마이그레이션을 사용하면 php artisan make:model "VerificationCode" -m을 사용하여 데이터 모델을 빠르게 생성하고 직접 마이그레이션할 수 있습니다.

ThinkSNS+ 마이그레이션은 다음과 같습니다.

두 번째 단계는 데이터 모델 클래스를 열고 그 안에 IlluminateNotificationsNotified 특성을 추가하는 것입니다.

코드에서 "soft 삭제"이기 때문입니다. 휴대폰 번호나 이메일 주소를 기준으로 인증번호가 전송되기 때문에 내장된 다른 트릭이 필요 없고, "메시지 알림 데이터 테이블"에 기록할 필요도 없기 때문에 RouteNotificationFor 메소드에서 전송해야 하는 계정(휴대전화 번호 또는 이메일 주소)을 직접 반환하도록 선택합니다.

팩토리 모드에 참여하고 빠르게 전송

database/factories/ModelFactory.php를 열고 알림 데이터 모델에 대한 팩토리 정의를 추가하세요.

이런 방식으로, 팩토리(ZhiyiPlusModelsVerificationCode:: 클래스) 팩토리 기능을 통해 신속하게 인증 코드를 생성하고 알림을 보낼 수 있습니다.

인증 코드 데이터 모델에 알림 특성이 추가된 이유는 무엇인가요?

먼저 Laravel에서는 User 모델에 IlluminateNotificationsNotifying trait가 기본적으로 추가되어 있으므로 $user->notify()를 통해 사용자에게 빠르게 알림을 보낼 수 있는데 사양 문서에 그런 문장이 있습니다. :

기억하세요. IlluminateNotificationsNotified 특성은 사용자 모델에만 포함할 수 있습니다.

이것은 Laravel 공식 문서의 원본 문장으로, IlluminateNotificationsNotified가 사용되는 것에만 국한되지 않는다는 것을 의미합니다. 사용자 모델에서.

그래서 검증 코드 모델에 IlluminateNotificationsNotifying을 추가한 것은 Laravel 알림의 올바른 사용과 완전히 일치합니다.

알림 클래스 개발

먼저 데이터 테이블 마이그레이션에는 알림 채널 식별자인 필드 채널이 있습니다. 이 값을 사용하여 인증 코드를 보내는 방법과 이 작업을 결정할 수 있습니다.

우리가 선택한 방법은 채널 값을 직접 반환하는 것입니다. 이 값은 이 알림 채널을 구현하는 한 어떤 값이든 보낼 수 있습니다. 내장되어 있으며 일부 전송 채널은 데이터베이스, 메일 및 nexmo

이메일 인증 코드 전송을 완료합니다

사실 이 단계에서 알림 클래스를 생성할 때 해야 할 일은 거의 없습니다. toMail 메소드가 완성되었으므로 메시지 내용을 직접 수정할 수 있습니다.

SMS 인증번호 전송 완료

문자 메시지를 보내기 위해 우리는 An Zhengchao가 개발한 문자 메시지 전송 클라이언트인 overtrue/easy-sms 패키지를 사용합니다. 이 패키지에는 문자 메시지 플랫폼이 많이 내장되어 있으며 구현도 뛰어납니다. (Tucao: 계약 호출 방법에 따라 게이트웨이를 전달하지 않는 등 일부 세부 사항은 문제가 있지만)

먼저 SMS를 사용하여 클라이언트 패키지 작성기 요구 사항 overtrue/easy-sms를 보낸 다음 새 구성/config/sms를 만듭니다. .php 내용은 쉽게 따르세요. 먼저 SMS 홈페이지에 설명을 추가하세요. (기사의 단어 수를 줄이기 위해 Alibaba 구성만 유지하세요.)

다양한 시나리오에 대한 채널 구성을 추가했습니다. 예를 들어 확인 코드 시나리오 코드는 메시지 작성자가 구성을 쉽게 읽을 수 있도록 사용됩니다.

그런 다음 AppServiceProvider.php를 열고 레지스터에 다음을 추가합니다.

이 시점에서 Laravel에 EasySms 통합이 완료되었지만 실제 기능은 아직 개발되지 않았습니다.

SMS 발송 채널 개발

왜 개발해야 할까요? 우선, easy-sms는 많은 것을 지원합니다. 각 전송 플랫폼에 대해 별도로 알림 전송 채널 클래스를 개발하는 것을 고려하거나, 우리는 easy-sms를 통해 SMS 알림 전송 채널 클래스를 하나만 개발하도록 선택합니다. SMS 전략. 여러 플랫폼에 인증 코드를 보내는 메커니즘. 먼저, 새로운 app/Notifications/Channels/SmsChannel.php 파일을 생성하세요. Laravel은 생성 기능을 제공하지 않기 때문에, send 메소드를 직접 구현하시면 됩니다. SmsChannel의 내용은 다음과 같습니다.

easy-SMS 기반의 SMS 알림 전송 채널이 완성되었습니다.

메시지 보내기 개발 시나리오

이 부분은 전적으로 easy-sms 개발에 속합니다. 다음 내용으로 새로운 VerificationCodeMessage.php를 만듭니다.

그런 다음 VerificationCode 확인 코드 알림 클래스로 돌아갑니다. SMS 메서드에 추가하면 내 코드는 다음과 같습니다.

다양한 인증 코드 채널에 대한 템플릿과 같은 시나리오 구성을 통해 메시지 작성자는 송신 게이트웨이를 기반으로 사용 시나리오 구성이 무엇인지 결정할 수 있습니다.

다시 불평하세요. easy-sms의 계약 설계에도 이 아이디어가 있어야 하는데 실제 게이트웨이가 호출될 때 getContent/getTemplate/getData가 게이트웨이를 전혀 통과하지 못합니다. . .

자, 개발이 완료되었습니다.

인증 코드 보내기

인증 코드 데이터 모델을 생성할 때 "공장"에 추가되었으므로 공장 기능을 직접 사용할 수 있습니다. 데모 보내기:

완료되었습니다. , easy-sms 아주 좋은 가방이에요.

위 코드는 모두 ThinkSNS Plus에서 가져온 것입니다.

위 내용은 이 글의 전체 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 참고해주세요!

관련 권장 사항:

Laravel을 통한 사용자 등록 및 로그인

Laravel5 프레임워크에서 배열을 뷰로 전송하는 방법 알아보기


위 내용은 Laravel '표준'을 통한 SMS 인증코드 전송 기능 개발의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.