Node の SMS API で検証コード ログインを実装するためのサンプル コード

Node の SMS API で検証コード ログインを実装するためのサンプル コード

1. ノードサーバーのセットアップ + データベース接続

ここでの操作は比較的簡単でわかりやすいです。ノードサーバーのクイックセットアップを参照してください。

2. SMS APIの使用

SMS APIについては、ここではAlibaba CloudのSMSサービスを例に挙げます(SMSサービスを備えたプラットフォームであればどれでも使用できます)。

2.1 プラットフォームにログインしてパラメータを設定する

1. SMS コンソールに入り、送信する SMS の形式を設定します。署名がない場合は、操作前に署名を申請する必要があります。

ここに画像の説明を挿入

2. APIデモの表示をクリックして、設定されたAPIに入り、Node.jsを選択します。

ここに画像の説明を挿入

2.2 生成されたAPIをプロジェクトで使用する

コードコメントは詳細です

const Core = require('@alicloud/pop-core'); //cwen は Ali SMS モジュールを呼び出します (最初にインストールする必要があります)
//cwenはAlibaba SMSサービスAPIを設定します。let client = new Core({
 accessKeyId: '<accessKeyId>', // 最初に適用する必要があります (以下の手順を参照)
 accessKeySecret: '<accessSecret>', // 最初に適用する必要があります (以下の手順)
 エンドポイント: 'https://dysmsapi.aliyuncs.com', // 変更する必要はありません apiVersion: '2017-05-25' // 変更する必要はありません });
//cwenリクエストメソッドlet requestOption = {
  メソッド: 'POST'
};

//# 検証コードをシミュレートするためにランダムな4桁の数字を生成する function rander(max, min) {
  Math.floor(Math.random() * (max - min)) + min を返します。
}
//# 携帯電話番号 + 確認コードを保存します(簡単に確認するため)
var ログイン情報 = [];
//# 電話番号が確認コードを送信したかどうかを確認する let validate = (phone) => {
  loginInfo.some(item => item.phone === phone) を返します
}
//# 検証コードが一致していることを確認する let validateCode = (phone, code) => {
  loginInfo.some(item => (item.phone === 電話 && item.code == コード)) を返します
}

//cwen は Alibaba Cloud API を使用して SMS 認証 (認証コード ログイン) を送信します
sendLoginCroeCode = async(req, res) => { を設定します。
  { 電話番号 } を req.body とします。
  randCode = rander(1000, 9999);とします。
  var パラメータ = {
      "RegionId": "cn-杭州",
      "PhoneNumbers": phone, // クライアントの電話番号 "SignName": "小陈于用ya", // 署名 "TemplateCode": "SMS_197625305", // テンプレート、テキスト メッセージを送信するために使用 "TemplateParam": JSON.stringify({ 'code': randCode }) // 送信する検証コードを指定します (ここでは rander 関数が例として使用されています)
    }
     //# 確認コードを送信する前に、携帯電話番号が登録されているかどうかを確認します。if (await isRegister(phone)) { // これはデータベース操作です(無視できます)
    client.request('SendSms', params, requestOption).then((result) => {
      結果コード == 'OK' の場合 {
        res.send({
          ステータス: 200、
          メッセージ: '送信に成功しました'
        });
        loginInfo.push({
          電話: 電話、
          コード: randCode
        });
        console.log(ランダムコード)
      } それ以外 {
        res.send({
          ステータス: 400、
          メッセージ: '送信に失敗しました'
        })
      }
    })
  } それ以外 {
    res.send({
      ステータス: 400、
      メッセージ: 「この電話番号は登録されていません」
    })
  }
}

//# 検証コードログインインターフェース let phoneCodeLogin = async(req, res) => {
  let { 電話番号、コード } = req.body;
  if (validate(phone)) { //携帯電話番号が認証コードを送信したかどうかを判断しますif (validateCode(phone, code)) { //認証コードが携帯電話番号と一致するかどうかを判断しますlet user = await isFirstLogin(phone); //これはユーザー情報を取得するためのデータベース操作です(無視できます)
      res.send({
        ステータス: 200、
        メッセージ: 'ログイン成功'、
        データ: ユーザー[0]
      })
      loginInfo = []; // ログインが成功したら、検証コードの再送信に失敗しないようにすぐに配列をクリアします} else {
      res.send({
        ステータス: 400、
        メッセージ: '認証コードエラー'
      })
    }
  } それ以外 {
    res.send({
      ステータス: 400、
      メッセージ: 「認証コードを取得できませんでした」
    })
  }
}

// 注意: 最後にインターフェースを公開することを忘れないでください

注意: accessKeyId、accessKeySecret使用前に申請する必要があります

ここに画像の説明を挿入

3. インターフェースを使用してログインする

ここではPostmanインターフェースデバッグツールを例にとり、携帯電話番号はデータベースに登録されている携帯電話番号です。

確認コードをリクエストする

ここに画像の説明を挿入

携帯電話で認証コードを受け取る

ここに画像の説明を挿入

認証コードログイン

ここに画像の説明を挿入

Node で SMS API を使用して認証コード ログインを実装するためのサンプル コードに関するこの記事はこれで終わりです。Node SMS 認証コード ログインに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Ali は SMS 検証コードより大きいノード koa2 実装コード (最新)
  • nodejs で Ali Dayu SMS 認証コードにアクセスする方法
  • Nodejs は Post リクエスト関数を送信します (SMS 検証コードの例を送信)
  • Nodejs が SMS 認証コード機能を実装

<<:  MySQL がテーブルを読み取れないエラー (MySQL 1018 エラー) の解決方法

>>:  Linuxのファイル権限の詳細な紹介

推薦する

Linux 3.X/4.x/5.x でパゴダ パネルのパスワードを忘れた場合の解決方法

ssh に入り、次のコマンドを入力してパスワードをリセットします (コマンドの末尾の「testpas...

deepin20 で NVIDIA クローズドソース ドライバーをインストールするための詳細な手順

ステップ1: ディープ「グラフィックドライバー」をインストールするdeepin v20にはデフォルト...

IntelliJ IDEA に Docker プラグインをインストールする詳細な手順 (2018 バージョン)

目次1. 開発環境2. dockerプラグインをインストールする1. アイデアのインストール2. イ...

クエリプロファイラを使用して MySQL ステートメントの実行時間を表示する方法

前回の記事では、MySQL ステートメントの実行時間をチェックする 2 つの方法を紹介しました。今日...

Windows で MySQL データベースを別のディスクに移動する

序文今日、MySQL をインストールしたところ、データベース ストレージがデフォルトで C ドライブ...

JavaScriptオブジェクト指向について学ぼう

目次JavaScript プロトタイプチェーンオブジェクトプロトタイプトップレベルのプロトタイプOb...

JS で Websocket ベースのマルチターミナル ブリッジング プラットフォームを実装する方法

目次1. デバッグ対象2. WebSocketの機能3. ソケット接続を確立する3.1 部屋の作成方...

UbuntuにMySQLデータベースをインストールする方法

Ubuntu は、Linux をベースにした無料のオープンソース デスクトップ PC オペレーティン...

Vue実装のカウンターケース

この記事では、カウンター表示を実現するためのVueの具体的なコードを例として紹介します。具体的な内容...

Vue nextTickの原理の分析

目次イベントループmiscroTask (マイクロタスク) UI レンダリング (重要なポイント)次...

Linux の crontab タスク スケジューリングの簡単な分析

1. スケジュールタスクを作成する命令crontab -eは現在のユーザーの編集インターフェースに入...

RocketMQ の Docker インストールとインストール中に発生した問題の解決策

目次rocketmqイメージを取得する名前rvを作成する単一のブローカーノードを作成するrocket...

JavaScript キャンバスでカラフルな太陽のハロー効果を実現

この記事では、カラフルな太陽のハロー効果を実現するためのJavaScriptキャンバスの具体的なコー...

MySql テーブル内の行を削除する実用的な方法

まず、どのフィールドまたはフィールドの組み合わせがデータ行を一意に識別できるかを決定する必要がありま...

Web面接におけるJS事前解析と変数プロモーションの違い

目次事前分析とは何ですか?変数と関数の準備の違いvar 変数の繰り返し宣言変数と関数の昇格の優先順位...