トークン生成と検証を実装するミニプログラム

トークン生成と検証を実装するミニプログラム

プロセス

各リクエストインターフェースは検証用のトークンを運ぶ
1. 検証が成功すると、インターフェースデータが返されます。
2. 検証に失敗した場合(トークンの有効期限が切れた場合)、アプレットは新しいトークンの生成を再度要求し、その後、以前のインターフェースを要求します。

キー値: 乱数 + タイムスタンプ + ソルト
値: id+session_key+openid

デモ

ミニプログラム

<表示>
  <button bindtap="loadTokenData">トークン要求データを送信する</button>
</ビュー>
ページ({
  データ: {
  },
 
  onLoad:関数(){
    // this._loadData();
  },
 
  //トークンを生成する
  setToken:function(コールバック){
    // wx.setStorageSync('token', "sfspx64w8x47w14x3zX4x4wf4")
    var that = this;
    wx.リクエスト({
      URL: 'http://2021xcx-api.com/api/gettoken',
      メソッド: 'POST'、
      成功: function(res){
        コンソールにログ出力します。
        var データ = res.data;
        if(データコード==1){
          //新しく取得したトークン値を更新します wx.setStorageSync('token', data.token);
          // コールバック関数 callback&&callback() を実行する
        }それ以外{
          .setToken();
        }
      }
    })
  },
 ロードトークンデータ:関数(){
   var that = this;
    wx.リクエスト({
      URL: 'http://2021xcx-api.com/api/orders',
      メソッド: 'POST'、
      ヘッダー: {
        'コンテンツタイプ': 'application/json',
        'トークン': wx.getStorageSync('トークン')
      },
      成功: function(res){
        var データ = res.data;
        コンソール.log(データ)
        if(データコード==903){
          // トークンの有効期限が切れたので、再度設定するよう要求します // コールバック関数を実行し、トークンが再取得された後もこのメソッドの実行を継続します。
          that.setToken(that.loadTokenData)
        }
      }
    })
  },
}) 

バックエンドインターフェース

ルーティング構成

<?php
Route::post("api/orders", "api/index/getOrders");
//トークン
Route::post("api/gettoken", "api/token/createToken");

インデックス.php

<?php
名前空間 app\api\controller;
app\api\controller\Token を使用します。
think\Cache を使用します。
 
IndexクラスはTokenを拡張します
{
    パブリック関数 getOrders(トークン $token){
        $token->verifyToken();
 
        $data['注文'] = [
            'id' => 1,
            'タイトル' => 'リンゴ',
            '時間' => 時間()
        ];
        json_encode($data) をエコーし​​ます。
 
    }
}

トークン.php

<?php
名前空間 app\api\controller;
think\Controller を使用します。
 
クラス Token は Controller を拡張します
{
    保護された$returnParam = [
        'コード' => 1,
        'msg' => 'リクエストが失敗しました'
    ];
 
    /**
     * [verifyTokenはトークンが運ばれ、存在するかどうかを検証します]
     * @return [型] [説明]
     */
    パブリック関数verifyToken(){
        $token = request()->header()['token'];
        $isSetToken = キャッシュ($token);
        // dump($isSetToken); die;
        if(!$isSetToken){
            $this->returnParam['code'] = 903;
            $this->returnParam['msg'] = "トークンの検証に失敗しました";
            echo json_encode( $this->returnParam );die;
        }
    }
    
    /**
     * [createToken トークン生成]
     * ヒント: トークンにユーザーID/session_kye/openidを記録する
     * @return [型] [説明]
     */
    パブリック関数 createToken()
    {
        1,9999 は 1 です。
        時間
        セール価格
 
        // * ここでシミュレートします--WeChatインターフェースはセッションキーとopenidを取得するために要求されません $tokenValue = [
            'uid' => 1,
            'セッションキー' => '84848aasa',
            'オープンID' => '20oxl65wc4d4s5x7hwc',
            'コード' => 'sssaaeee'
        ];
        $tokenKey = md5($randStr.$time.$sale);
        //トークンデータをキャッシュします。cache($tokenKey, json_encode($tokenValue), 1);
 
        $戻り値 = [
            'コード' => 1,
            'トークン' => $トークンキー
        ];
        json_encode をエコーし​​ます($returnParam);
    }
   
} 

ミニプログラムトークン生成と検証に関するこの記事はこれで終わりです。ミニプログラムトークン生成と検証に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • WeChatミニプログラムでトークンの有効期限を処理する方法
  • WeChatミニプログラムクローラートークン自動更新問題について
  • Access_Tokenの統合管理を実現するミニプログラム開発
  • WeChatミニプログラムにログインしてトークンを交換する方法のチュートリアル
  • WeChatアプレットURLとトークン設定の詳細な説明

<<:  CSS クロスブラウザ スタイルのバグのデバッグについて

>>:  MySqlエスケープの詳細な使用例

推薦する

純粋な CSS3 で実装された三目並べゲーム

操作効果: html <div class="三目並べ"> <...

Linux でファイルを削除するときに「操作は許可されていません」というプロンプトが表示される場合の対処方法

同僚からよく聞かれるのですが、ファイル/ディレクトリを削除すると「操作は許可されていません」というエ...

Oracle を MySQL に置き換える際の問題と解決策

目次移行ツールアプリケーション変換mysql8.0 ドライバ パッケージを追加データソース構成の変更...

Linux システムの仮想ホストで Swoole Loader 拡張機能を有効にする方法

特記事項: Swoole 拡張機能のみがインストールされ、サーバーはホストにインストールされません。...

js タグ構文の使用法の詳細

目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...

画像をハイパーリンクとして使用したときに表示される青いボックスを削除する方法

最近、Dreamweaver を使用して製品プレゼンテーションを作成し、画像にハイパーリンクを追加し...

Vueプロジェクトでコンポーネントをカプセル化する簡単な手順

目次序文Toastコンポーネントをカプセル化する方法ユースケース具体的な実装要約する序文ビジネスが発...

Kubernetes の応用分野の概要

Kubernetes は、アプリケーションの移植性とハイブリッド クラウド/マルチクラウドの展開をサ...

ハンドラー PageHandlerFactory-Integrated のモジュール リストに不正なモジュール ManagedPipelineHandler が含まれています

Web プロジェクトを開発する場合、IIS をインストールする必要があります。IIS がインストール...

Ubuntu 19 以下に Android Studio をインストールするチュートリアル

過去の経験から言うと、タスクを完了した後にメモを取るのは良い習慣です。インストール環境はUbuntu...

JavaScriptで配列を作成する方法の詳細な説明

目次JavaScript で配列を作成する配列の使用配列を分割文字列に変換する配列に要素を追加する配...

MySQLシリーズのMariaDBサーバーのインストール

目次チュートリアルシリーズ1. yumパッケージマネージャーを使用してMariaDBサーバーをインス...

Linux システムのパフォーマンスを分析するための top コマンドの詳細な説明

Linux topコマンドの紹介top コマンドは、Linux でよく使用されるパフォーマンス分析ツ...

ベースリンクタグの使用の紹介ベース

<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...

MySQL 8.0.16 圧縮版のダウンロードと Win10 システムへのインストール チュートリアル

公式サイトからダウンロード: https://www.mysql.com MySQLの公式サイトにア...