リフレッシュトークン


リフレッシュトークンは新しいアクセストークンを取得するために使用できる資格情報です.
  • リフレッシュトークンの寿命は、アクセストークンの寿命と比べてずっと長い.
  • リフレッシュトークンも有効期限が切れるが、長寿命である.
  • 現在のアクセストークンが期限切れになるか、無効になるとき、認可サーバは新しいアクセストークンを得るためにリフレッシュトークンをクライアントに提供します.
    JWTトークンは非常に特定の時間のために有効です.有効期限は、アクセストークンの一部として容易に利用可能です.JWTデコードなどのライブラリを使用してアクセストークンをデコードし、有効期限を抽出できます.一度、満了時間があります.
    ここに3つのオプションがあります
  • は、それがリフレッシュする必要があるかどうかを知る要求をする前に毎回トークンをチェックします
  • それが期限が経過する前に定期的にX秒をリフレッシュするためにSetTimeoutを使用します
    保護されたルートが401の
  • を返すならば、
  • が新しいアクセストークンを求めます
    この記事では、3番目のアプローチ
    擬似コード
    
    try {
    
      // api call to protected route
      const response = await fetch();
    
      if (res.status === 200) {
    
        // update state management library with accessToken, refreshToken you have received from response
        // update cookies/LocalStorage with accessToken, refreshToken you have received from response
    
      } else {
    
        // perform necessary action
    
      }
    } catch (error) {
    
      if (error.response.status === 401) {
    
        // get refreshToken from cookies or localstorage . in My case it's from cookies
        const refreshToken = cookies.readCookie("refreshToken");
    
        if (refreshToken) {
    
          // api call to GET new accessToken & refreshToken
          const response = await fetch();
    
          // update state management library with accessToken, refreshToken you have received from response
          // update cookies/LocalStorage with accessToken, refreshToken you have received from response
    
        } else {
    
          // redirect user to login
    
        }
      }
    }
    
    
    次の記事では、APIの失敗を取得し、ユーザーが複数のトークンを要求しないようにします.