質問: プロジェクトには 2 つのトークンがあり、1 つは有効期間が 2 時間 (ショート トークンと呼ばれる)、もう 1 つは有効期間が 14 日間 (ロング トークンと呼ばれる) です。 答え: 1. セキュリティ上の考慮とトークン漏洩防止のため、サーバー リソース内のすべてのリクエストでは短いトークンのみを使用でき、短いトークンの有効期間は 2 時間のみです。
このインターフェースでのみ、長いトークンを使用してリクエストを送信できます。 2. ユーザーエクスペリエンスを向上させるために、操作中のページからユーザーに直接終了を要求しないでください。 'vue' から Vue をインポートします 'axios' から axios をインポートします 'vue-axios' から VueAxios をインポートします './token' から { getToken, setToken } をインポートします。 '../router/index.js' からルーターをインポートします。 'vant' から { Toast } をインポートします Vue.use(VueAxios、axios) を使用します 定数インスタンス = axios.create({ baseURL: 'ベースURL', タイムアウト: 100000 }) // リクエストインターセプターを追加するinstance.interceptors.request.use( 関数(設定){ // トークンを均一に追加する getToken() && (config.headers['Authorization'] = `Bearer ${getToken().token}`) 設定を返す }, 関数(エラー){ Promise.reject(error) を返します。 } ) //レスポンスインターセプターを追加/** * 1. 401 の場合は無視* 2. トークンがある場合はログイン ページにジャンプ* 3. try-catch を使用して refresh_token を使用してトークンを取得し、成功した場合は refresh_token が無効な場合はログイン ページにジャンプ* 4. 取得したトークンを保存して更新し、ユーザーの希望する操作を続行*/ インスタンスインターセプターレスポンスの使用( 関数(応答){ 応答を返す }, 非同期関数(エラー){ if (401 === error.response.status) { setTimeout('console.clear()', 2000) (トークンを取得する)場合{ 試す { // ログインしましたが、短い T の有効期限が切れています。長い T を使用して短い T を取得します (ユーザー トークンを更新します) res = axios({ を待ちます url: 'ベースアドレス/v1_0/authorizations', メソッド: 'PUT'、 ヘッダー:{Authorization: `Bearer ${getToken().refresh_token}`} }) // 短いTを更新 トークン = getToken() とする トークン.トークン = res.data.data.トークン setToken(トークン) // ユーザー操作を続行します。インスタンス(error.config) を返します。 } キャッチ(エラー){ // Long T が失敗した場合、ログイン ページにジャンプします。Toast.fail('まずログインしてください') router.push({ パス: '/login' }) } } それ以外 { // ログインしていない場合はログインページに移動します Toast.fail('まずログインしてください') router.push({ パス: '/login' }) } } Promise.reject(error) を返します。 } ) デフォルトインスタンスをエクスポートする 上記は、Webプロジェクト開発における2つのトークンの理由とサンプルコードの分析の詳細な内容です。Webプロジェクト開発の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Dockerfile テキストファイルの使用例の分析
>>: MySQL データベースのステートメント ワイルドカード ファジー クエリの概要
この記事では、MySQL 5.7 zipアーカイブ版のインストールチュートリアルを参考までに紹介しま...
目次一方向データフローの説明Vue2.x の使用法親コンポーネントに変更を通知するイベントのフォーム...
下図のように、 selectポップアップレイヤーの下部に操作ボタンを配置するのが一般的な設計方法です...
Docker コンテナ内のプログラムは、ホスト ディレクトリ内のデータにアクセスして呼び出す必要があ...
今日はたまたま友人のサーバーの移転を手伝うことになり、サーバーの基本的な設備の設定を行ったのですが、...
目次1. 書き込み可能: 書き込み可能2. 列挙可能: 列挙可能3. 設定可能: 設定可能オブジェク...
まず、action はフォームの属性です。HTML5 では必須の属性値として定義されています。onS...
Compose のいくつかの部分は、何らかの方法で環境変数を扱います。このチュートリアルは、必要な情...
1. Dockerネットワークカードを作成する [root@i ~]# brctl addbr d...
目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...
<br /> テキスト、シンボル、リンクの 3 つの側面に焦点を当て、主に中国語で、私の...
translate(-50%,-50%) 属性:中央に配置するには、長さと幅の 50% だけ上と左...
目次ユーザー管理新しいユーザーを作成するユーザー名の変更ユーザーのパスワードを設定するルートパスワー...
目次序文1. Dockerをインストールする2. Dapr CLIをインストールする3. Net6 ...
Linux に nginx と複数の tomcat をインストールする方法はここでは紹介しません。不...