ホームページ  >  記事  >  バックエンド開発  >  LaravelでSMS認証コード送信機能を開発するための「仕様書」(写真)

LaravelでSMS認証コード送信機能を開発するための「仕様書」(写真)

黄舟
黄舟オリジナル
2017-10-27 09:02:441414ブラウズ

Laravel は、シンプルでエレガントな PHP Web 開発フレームワーク (PHP Web フレームワーク) です。次に、この記事を通じて、Laravel の「標準」開発 SMS 認証コード 送信機能を共有します。必要な友達はそれを参照してください

Laravel の概要

Laravel は、次のセットです。シンプルでエレガントな PHP Web 開発フレームワーク (PHP Web フレームワーク)。ヌードルのような乱雑なコードから解放され、完璧なネットワーク APP を構築するのに役立ち、コードの各行が簡潔で表現力豊かになります。

Laravel には、高度な PHP ActiveRecord 実装である Eloquent ORM がすでにあります。関係の両側に「制約」を簡単に適用できるため、データを完全に制御し、ActiveRecord の利便性をすべて享受できます。 Eloquent は、Fluent のクエリ ビルダー (クエリ ビルダー) のすべてのメソッドをネイティブにサポートします。

Laravelの「標準」開発SMS認証コード送信機能需要シナリオ

携帯電話やメールに送信できる「認証コード」または「メッセージ通知」を送信します。

完成

まず、Laravelでの仕様としてはLaravelの「メッセージ通知」を使用することになっており、ここではシナリオに基づいて「認証コード」を使用します。この要件は、ほぼすべてのソフトウェア システムで使用されます。

通知シーンを作成します

最初のステップは、phpArtisan make:notification を使用して通知クラスを作成することです。デフォルトで、toMail と toArray を介した 3 つのメソッドが存在します。検証コードが送信されたら、送信します。 このコントロール クラスの名前は VerificationCode です。

次に、検証コードのデータ モデルとデータ テーブルの移行を作成します。phpArtisan make:model "VerificationCode" -m を使用して、データ モデルと移行を直接簡単に作成できます。

ThinkSNS+ の移行は次のとおりです:

2 番目のステップは、データ Model クラス を開き、その中に IlluminateNotificationsNotifiable トレイトを追加することです:

コードから、次の追加も行っていることがわかります。 「ソフト削除」では、携帯電話番号またはメールアドレスに基づいて認証コードが送信されるため、他の組み込みトリックは必要なく、「メッセージ通知データテーブル」に記録する必要もありません。 RouteNotificationFor メソッドでは、送信する必要があるアカウント (携帯電話番号または電子メール アドレス) を直接返すことを選択します。

ファクトリーモードに参加し、

database/factories/ModelFactory.phpを開き、通知データモデルに関するファクトリー定義を追加します:

このようにして、factory(ZhiyiPlusModelsVerificationCode)を渡すことができます。 ::class) ファクトリ関数を使用して、検証コードを迅速に作成し、通知を送信します。

通知特性が検証コード データ モデルに追加されるのはなぜですか?

まず、LaravelではデフォルトでUserモデルにIlluminateNotificationsNotifiableトレイトが追加されているので、$user->notify()ですぐにユーザーに通知を送信できるのですが、仕様書にはこんな一文があります:

覚えておいてください、IlluminateNotificationsNotifiable トレイトはどのモデルでも使用できますが、User モデルにのみ含めることに限定されるわけではありません。これは Laravel の公式ドキュメントの原文であり、IlluminateNotificationsNotifiable が使用されるだけではないことを意味します。ユーザーモデルについて。

したがって、検証コードモデルへの IlluminateNotificationsNotifiable の追加は、Laravel 通知の正しい使用と完全に一致しています。

通知クラスを開発します まず、データ テーブルの移行には、通知チャネル識別子であるフィールド チャネルがあり、この値を使用して検証コードの送信方法とこの操作を決定できます。通知クラスの経由で実装されています:

この通知チャネルを実装している限り、この値は任意の値にすることができます。組み込みのチャネル データベース、メール、nexmo がいくつかあります

メール確認コードの送信を完了します実際、通知クラスを作成するときに、このステップで行う必要があることはほとんどありません。 toMail メソッドが完成したので、メッセージの内容を直接変更できるようになります。

SMS認証コードの送信を完了します

SMSの送信にはovertrue/easy-smsパッケージを使用します。これはAn Zhengchaoによって開発されたSMS送信クライアントであり、実装も同様です。素晴らしい。 (Tucao: コントラクトの呼び出し方法に従ってゲートウェイを通過しないなど、いくつかの詳細に問題がありますが)

まず SMS を利用してクライアントパッケージコンポーザーに送信するのは、overtrue/easy-sms が必要で、それから新しいconfiguration/config/smsを作成します。 .php の内容については、SMS ホームページに説明を追加するだけです (記事の文字数を減らすために、Alibaba の設定のみを保持します)。

さまざまなシナリオ用にチャネル構成を追加しました。たとえば、検証コード シーン コードは、メッセンジャー

が構成

を読みやすくするために使用されます。

次に、AppServiceProvider.php を開き、以下をレジスタに追加します:

この時点で、Laravel への EasySms の統合は完了していますが、実際の機能はまだ開発されていません。

SMS送信チャネルを開発する

なぜ開発するのか?まず、easy-sms は多くの機能をサポートしています。送信プラットフォームごとに通知送信チャネル クラスを開発することを検討することも、SMS 送信チャネル クラスを 1 つだけ開発することもできます。 SMS 戦略。検証コードを複数のプラットフォームに送信するメカニズム。 まず、新しい app/Notifications/Channels/SmsChannel.php ファイルを作成します。Laravel には生成機能がないため、これを自分で作成する必要があります。 SmsChannel の内容は次のとおりです。

easy-sms に基づいた SMS 通知送信チャネルが完成しました。

開発シナリオ

メッセージを送信

この部分は完全に easy-sms 開発に属し、次の内容の新しい VerificationCodeMessage.php を作成します:

その後、VerificationCode 検証コード通知に戻ります。クラスに toSms メソッドを追加します。私のコードは次のとおりです。

シナリオ構成 (検証コードのさまざまなチャネルのテンプレートなど)。これにより、メッセージ送信者は送信に基づいて使用シナリオの構成を決定できます。ゲートウェイ。

もう一度文句を言いますが、easy-sms のコントラクト設計にもこの考えがあるはずですが、実際のゲートウェイが呼び出されたときに、getContent/getTemplate/getData はゲートウェイをまったく通過しません。 。 。

さて、開発は完了しました。

検証コードを送信します

検証コードのデータモデルを作成するときに「ファクトリー」に追加されたため、ファクトリー関数を直接使用できます。デモを送信します:

これで完了です。 , easy-sms とても良いバッグです。

以上がLaravelでSMS認証コード送信機能を開発するための「仕様書」(写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。