以下の手順に従ってください 1. 2. 3. 4. ファイル vuex ウェアハウス構成
5. インターフェースのカプセル化 目次 request.js コンテンツ
// http リクエスト インターセプター、トークン値がある場合はトークン値を設定します import axios from 'axios' 'promise' から Promise をインポートします './utils' から util をインポートします。 './../store/index' からストアをインポートします。 constサービス = axios.create({ タイムアウト: 60000, // リクエストタイムアウトヘッダー: { // 承認: 承認、 'コンテンツタイプ': 'application/json;charset=UTF-8' } }); // http リクエスト インターセプター service.interceptors.request.use( 設定 => { tokenExist = util.tokenExist(); とします。 if (トークンが存在する) { // bus.$emit('toggleloading', true) //読み込み中を表示 //トークンが存在する場合 config.headers['Authorization'] = `Bearer ${util.getToken()}`; } // Toast.loading({ // メッセージ: '読み込み中...', // 期間: 0, // クリック禁止: true // }); 設定を返します。 }, エラー => { Promise.reject(エラー); } ) // http 応答サーバー応答インターセプター、 //ここで401エラーをインターセプトし、ログインページに戻ってトークンを再度取得します サービスインターセプターレスポンスの使用( レスポンス => { 応答ステータス === 200 の場合 //通信成功// Toast.clear(); /**************** * response.data.status === 0 エラー* response.data.status === 100 成功* response.data.status === 401 トークンの有効期限が切れました* * *************/ // bus.$emit('toggleloading', false) // 読み込みを非表示にする (レスポンスデータの状態 === 401)の場合{ //トークンの有効期限が切れている場合は、ログインにジャンプします Message.error("ログインの有効期限が切れています。もう一度ログインしてください!"); store.commit('SET_TOKEN', ''); util.goLogin(); } そうでない場合 (response.data.state === 0) { // メッセージ.error(response.data.message); 応答データを返します。 } それ以外 { 応答データを返します。 } } }, エラー => { //リクエストが失敗しました//; 定数レスポンス = error.response; (応答ステータス === 401)の場合{ // Toast.fail(response.data.message); Message.error("ログインの有効期限が切れています。もう一度ログインしてください!"); util.goLogin(); } そうでない場合 (response.status === 403) { $ルーター.push({ 名前: '403' }); } それ以外 { // Toast.fail(response.data.message ? response.data.message : 'システムエラーです。管理者に連絡してください'); // メッセージ.error({ // メッセージ: 'サービスがありません。管理者に連絡してください' // }); } Promise.reject(error) を返します。 } ); デフォルト サービスをエクスポートします。 http.js コンテンツ データ要求方法 './request' からリクエストをインポートします。 // './../store/index' からストアをインポートします。 定数http = { リクエスト(設定) { リクエスト(config); }, 投稿(URL, データ) { // if (データインスタンスオブオブジェクト) { // }それ以外{ // データ = { // ...データ // }; // } リクエストを返す({ URL、 メソッド: 'post'、 データ }); }, postFile(url, データ, コンテンツタイプ) { リクエストを返す({ URL、 メソッド: 'post'、 データ、 コンテンツタイプ }); }, get(url, パラメータ) { リクエストを返す({ URL、 メソッド: 'get'、 パラメータ }); }, (URL、データ)を置く{ リクエストを返す({ URL、 メソッド: 'put'、 データ }); }, 削除(url) { リクエストを返す({ URL、 メソッド: '削除' }); }, ダウンロード(url, パラメータ) { リクエストを返す({ URL、 メソッド: 'get'、 パラメータ、 レスポンスタイプ: 'blob' }); }, ダウンロードポスト(url, データ) { リクエストを返す({ URL、 メソッド: 'post'、 データ、 レスポンスタイプ: 'blob' }); } }; デフォルトのhttpをエクスポートします。 utils.js コンテンツ トークンを取得し、トークンが存在するかどうかを判断する '../store/index' からストアをインポートします。 util = { とする //トークンを取得 トークンを取得する() { store.getters.token を返します。 }, //トークンが存在するか判断する tokenExist() { フラグを立てます。 トークンを store.getters.token とします。 if (トークン && トークン !== '') { フラグ = true; } それ以外 { フラグ = false; } トークンを返します。 }, } デフォルトのユーティリティをエクスポートする vuex ウェアハウス構成
index.js コンテンツ 「vue」からVueをインポートします 「vuex」からVuexをインポートします 'vuex-persist' から VuexPersistence をインポートします。 './db' から db をインポートします Vue.use(Vuex) //vuex 状態の永続性 const vuexLocal = new VuexPersistence({ ストレージ:window.localStorage }) 定数ストア = 新しい Vuex.Store({ 州:{}、 変異:{}, アクション:{}, モジュール:{ デシベル }, プラグイン:[vuexLocal.plugin] }) デフォルトストアをエクスポート db.js コンテンツ 定数db = { 州: { トークン: ''、 }, ゲッター:{ トークン:状態 => 状態.トークン }, 突然変異: //トークンを保存 setToken: (状態、値) => { state.token = 値 } }, アクション: {} } デフォルトDBをエクスポート インターフェースのカプセル化 「../common/http」からhttpをインポートします。 /************ログインと登録*************/ //テストインターフェース関数text(params){ http.get("api/Test/GetList", パラメータ) を返します } //ログイン関数Login(params) { http.post("api/Login/Login", パラメータ) を返します } // グラフィック検証コードを取得する function GetValidateCode(params) { http.post("api/Login/GetValidateCode", パラメータ) を返します } // 電話認証コードを取得します。注: 事前にヒューマンマシン認証を検証する必要があります。そうしないと、SMS によって悪意を持ってスワイプされるリスクがあります。function GetPhoneCode(params) { http.post("api/Login/GetPhoneCode", パラメータ) を返します。 } //登録検証情報関数 RegisterUserVerify(params) { http.post("api/Login/RegisterUserVerify", パラメータ) を返します } // 登録、パスワードの設定、ユーザー情報の登録 function RegisterUserInfo(params) { http.post("api/Login/RegisterUserInfo", パラメータ) を返します。 } // パスワード確認名と電話番号を忘れた場合 function ResetPasswordVerify(params) { http.post("api/Login/ResetPasswordVerify", パラメータ) を返します } // パスワードを忘れた場合 パスワード更新関数 ResetPassWord(params) { http.post("api/Login/ResetPassWord", パラメータ) を返します。 } 輸出 { ログイン、 文章、 電話コードを取得、 登録ユーザー確認、 検証コードを取得、 パスワードをリセット、確認、 パスワードをリセット、 ユーザー情報の登録 } 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: ウェブサイトのデザイン体験のための7つの異なるカラースキーム
*ページを作成する: 2つの入力ボックスとボタン*コードと手順/* 1. 入力行と列の値を取得する2...
1. 丸い境界線: CSSコードコンテンツをクリップボードにコピー境界線の半径: 4px ; 2....
最近のウェブサイトのほとんどはページが長く、4 画面または 5 画面の長さのものもあれば、2 画面ま...
フォーマットエンコーディング1. ページの幅は600~800px、長さは1024px以内に設定してく...
目的カルーセルコンポーネントをカプセル化して直接使用します。具体的な内容は以下のとおりです。一般的な...
Linux には、マウントされたハードディスクとマウントされていないハードディスクの 2 種類のハー...
シナリオ: 仮想マシンの Docker コンテナに最新バージョンの MySQL をインストールした後...
1. ブラウザのレンダリングモードとdoctype一部の Web ページは標準に従って作成されていま...
まず、コンテナが稼働している必要がありますコンテナのCONTAINER IDは、sudo docke...
2つの小さな問題ですが、長い間私を悩ませていました。最初の質問テキストエリアの左側のテキストは常にテ...
Docker コンテナのネットワーク障害に対する 6 つの解決策注: 以下の方法は、コンテナ内のパブ...
目次前面に書かれた環境の展開Zookeeper クラスタの展開Clickhouse クラスターの展開...
結果:実装コードhtml <ul class="スライド"> <...
インターネット上で多くの関連チュートリアルを見てきましたが、インストール プロセスにはまだいくつかの...
序文世界最高の Web サーバーの 1 つである Nginx の利点は明らかです。 Nginx がリ...