このプロジェクトは最近テストされ、テスターから、トークンの有効期限が切れたため、ルートが自動的にログイン ページにジャンプしてユーザーが再度ログインできるようにするべきであるというバグが報告されました。まず、いくつかの前提条件についてお話しします。 1: 弊社のトークン有効期限は本番環境では1時間に設定されており、トークンの有効期限が切れるとすべてのインターフェースが直接戻ります。 ログインページに直接移動し、ユーザーがログインしてトークンを取得できるようにします。 インターフェースによって返される情報 { コード:10009、 メッセージ: 'トークンの有効期限が切れました', データ:null } グローバルルーティングフック機能 router.beforeEach(async(to, from, next) => { //トークンを取得 // ユーザーがログインしているかどうかを判定する 定数hasToken = getToken() (トークンを持っている場合){ //トークンが存在する場合、現在のリダイレクトルートがログインインターフェースの場合、if (to.path === '/login') { // ログインしている場合はホームページにリダイレクトします 次へ({ パス: '/' }) NProgress.done() } それ以外 { //ここで、ユーザーがこのルートにアクセスする権限を持っているかどうかを判断するために、ユーザーの権限を削除します} catch (error) { // トークンを削除し、ログインページに移動して再度ログインします store.dispatch('user/resetToken') を待機します。 Message.error(error || 'エラーあり') 次へ(`/login?redirect=${to.path}`) NProgress.done() } } それ以外 { //トークンが存在しない if (whiteList.indexOf(to.path) !== -1) { //リダイレクトするルートがホワイトリストにある場合は、next() にジャンプします } それ以外 { // それ以外の場合はログインページにジャンプします next(`/login?redirect=${to.path}`) NProgress.done() } } }) そこで、すべてのリクエストを直接インターセプトします。応答データがコード 10009 を返すと、ユーザー情報を直接クリアしてページをリロードします。ユーザーがログインすると、トークン、名前、権限情報が store/user.js ファイルに保存され、トークンの有効期限が切れるとユーザー ファイル内の情報が消去されるため、コードを簡略化しました。このように、トークンの有効期限が切れた後、ページが更新されたりコンポーネントにジャンプしたりすると、グローバル beforeEach 判定が呼び出されます。トークン情報が存在しない場合は、ログインページに直接ジャンプします。 'axios' から axios をインポートします 'element-ui' から { MessageBox, Message } をインポートします。 '@/store' からストアをインポートします '@/utils/auth' から { getToken } をインポートします。 constサービス = axios.create({ ベースURL: process.env.VUE_APP_BASE_API、 タイムアウト: 5000 }) // リクエスト送信時にトークンを運ぶ service.interceptors.request.use( 設定 => { (store.getters.token)の場合{ config.headers['sg-token'] = getToken() } 設定を返す }, エラー => { コンソール.log(エラー) Promise.reject(error) を返します。 } ) サービスインターセプターレスポンスの使用( レスポンス => { コンソールログ(応答データ) const res = レスポンス.data // トークンの有効期限が切れたので、ログインインターフェースに戻る if (res.code === 10009) { store.dispatch('user/logout').then(() => { 場所を再読み込み(true) }) } 戻り値 }, エラー => { console.log('err' + error) // デバッグ用 メッセージ({ メッセージ: error.msg、 タイプ: 'エラー'、 期間: 5 * 1000 }) Promise.reject(error) を返します。 } ) デフォルト サービスをエクスポートする トークンの共有については以上です。プロジェクトに応じて、上記のコードをデータに置き換えてください。 Vue を使ってトークンの有効期限が切れたら自動的にログインページに飛ぶ方法についてはこれで終了です。トークンの有効期限が切れたら自動的にログインページに飛ぶ方法についての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: URL 書き換えモジュール 2.1 URL 書き換えモジュールのルール記述
Docker ダウンロード アドレス: http://get.daocloud.io/#instal...
システム:セントOS7 RPM パッケージ: mysql-コミュニティクライアント-5.7.18-1...
今日、私はクラスメートが問題を解決するのを手伝いました - Tomcat の起動が非常に遅く、約 5...
HTML5 では、ヘッダー、フッター、ナビゲーションなどのセマンティック タグが追加されているため...
最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...
この記事では、シンプルなカレンダー効果を実現するためのJavaScriptの具体的なコードを参考まで...
今日は、CSS を使用してクールな画像カルーセル コンポーネントを作成する方法を学びます。その原理は...
Web デザインは科学であると同時に芸術でもあります。 Web デザイン作業は、半分は適切なプログラ...
目次序文VMware クローン仮想マシン (準備、3 台の仮想マシンのクローン、1 台のマスター、2...
この記事では、マウス追従ゲームを実装するためのjsの具体的なコードを参考までに共有します。具体的な内...
問題の説明私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブル...
その理由はモッカー プラットフォームを導入したかったので、友人の勧めで既成のプロジェクト api-m...
1.公式サイトからインストールパッケージをダウンロードするhttp://nginx.org/en/d...
目次1. JavaScriptについて2. JavaScript イベントループ3. マクロタスクと...
目次コンポーネントの基本概念オブジェクトとコンポーネントの違い成分属性属性とプロパティ属性:財産:ク...