リフレッシュトークン
リフレッシュトークンは新しいアクセストークンを取得するために使用できる資格情報です.リフレッシュトークンの寿命は、アクセストークンの寿命と比べてずっと長い. リフレッシュトークンも有効期限が切れるが、長寿命である. 現在のアクセストークンが期限切れになるか、無効になるとき、認可サーバは新しいアクセストークンを得るためにリフレッシュトークンをクライアントに提供します.
JWTトークンは非常に特定の時間のために有効です.有効期限は、アクセストークンの一部として容易に利用可能です.JWTデコードなどのライブラリを使用してアクセストークンをデコードし、有効期限を抽出できます.一度、満了時間があります.
ここに3つのオプションがありますは、それがリフレッシュする必要があるかどうかを知る要求をする前に毎回トークンをチェックします それが期限が経過する前に定期的にX秒をリフレッシュするためにSetTimeoutを使用します
保護されたルートが401の を返すならば、が新しいアクセストークンを求めます
この記事では、3番目のアプローチ
擬似コード
JWTトークンは非常に特定の時間のために有効です.有効期限は、アクセストークンの一部として容易に利用可能です.JWTデコードなどのライブラリを使用してアクセストークンをデコードし、有効期限を抽出できます.一度、満了時間があります.
ここに3つのオプションがあります
保護されたルートが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の失敗を取得し、ユーザーが複数のトークンを要求しないようにします.Reference
この問題について(リフレッシュトークン), 我々は、より多くの情報をここで見つけました https://dev.to/chandramarch18/refresh-token-in-spa-18khテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol