Refresh Token


ダウンロードが必要なライブラリ


graphql-request
$ yarn add graphql-request

accessTokenが期限切れになった場合の2つの解決方法


第一の方法


  • onErrorに出会ったら

  • restore APIを送信すると、accessTokenとともにBackendに送信されます.

  • そしてBackendは受信したデータをDBで送信する

  • 検証時間再リセットされたaccessTokenはBackendに送信されます.

  • BackendでリセットしたaccessTokenをbrに渡します.

  • brから新たにリリースされたaccessTokenが受信された場合は、グローバルContextに格納されます.

  • 失敗したクエリーを再要求します.
  • accessTokenの有効期限が2時間の場合は、2時間ごとに更新されます.
    refreshTokenが2ヶ月の場合、accessTokenが2ヶ月後に期限切れになります.
    再ログインを求めるメッセージが表示され、「ログイン」ウィンドウに移動します.
    これにより、タグが期限切れになると自動的にタグが更新されるため、ユーザーはタグを期限切れにしません.
    サービスを利用できます.
    トークンの取得期限切れ=>エラーキャッシュ=>AccessTokenリクエストの復元=>AccessToken.
    =>GlobalContext=>クエリーの再展開=>新しいaccessTokenを正常に実行するために再取得
    無限反復

    第2の方法


    refreshTokenを無視して再ログインさせます.

    マイクロサービス


    認証サーバー
    リソースサーバ
    ブラウザで、バックエンド・サーバから認証に関連するデータを受信します.
    brとBackend間の通信が終了します.(認証サーバ通信が終了し、リソースサーバのみで通信)
    ただしaccessTokenが期限切れになった場合
    エラーが発生した場合は、Backと再通信し、accessTokenを再発行します.(認証サーバ通信の再起動)
    ここでは、認証サーバとリソースサーバに簡単に分けます.
    Backendでは、より詳細に役割を割り当ててサービスします.
    これはマイクロサービスと呼ばれています.
    マイクロサービスの利点は、メンテナンスが容易であることです.

    フリーパス


    エラーが発生した場合、restore apiを要求するために、
    私たちは間違った人が彼を捕まえる必要がある.
    エラー時にチェックする機能はonErrorです

    _app.tsxにマウントした後
    refreshTokenがlocalStorageで「true」の場合
    getAccessTokenにsetAccessTokenを入れて実行します.

    ちなみに、ログイン時にローカルメモリにrefreshTokenが追加された値は「true」です.

    setAccessToken要求RESTORE ACCESS TOKENを受信します.
    restore APIが要求されると、更新されたaccessTokenが受信され、その結果が結果に含まれる.
    newAccessTokenをpropsとして受信したsetAccessTokenはglobal Stateに格納される.
  • パターンQLERRORSがある場合は
  • 当時発生したエラーが「UNAUTHENTICATED」なら
  • 既存ヘッダ値を新しいaccessToken
  • として保存する.
  • は、その後、最終結果に配置され、操作に戻る.

  • クッキーのsrc値のため、httpではなくアドレスにhttpを書くセキュリティサイトとして必要です
    さらに、クライアントを介して下位コンポーネントからApolloクライアントに書き込むこともできます.
    必ずお客様に伝えてください.