私のユースケースは次のとおりです。
- JWT の期限切れ (httpOnly Cookie として渡される) が原因で失敗する API からのユーザー リクエスト アセット - API は 401 ステータス コードを返します。
- クライアントから auth0 へのリクエストで新しい JWT を取得するために、refresh_token を使用して (ユーザーが何もせずに) 再びそれらを認証します。
- その新しい JWT を API に送信して、期限切れの Cookie を置き換える httpOnly Cookie として設定します。
- 次に、ステップ 1 でユーザーが API に対して行った元のリクエストを再試行します。
Redux アプリ内でredux-observableを使用して Observables を使用しようとしています。上記のユーザー フローを機能させる別の方法を考えられる場合は、その方法を教えていただければ幸いです。
注意。使用していますrxjs V5
export const fetchAssetListEpic = (action$, store) => {
return action$.ofType('FETCH_ASSET_LIST')
.switchMap( action => {
const options = {
crossDomain: true,
withCredentials: true,
url: uriGenerator('assetList', action.payload)
};
return ajax(options);
})
.map(fetchAssetListSuccess)
.retryWhen(handleError)
.catch(redirectToSignIn);
};
function handleError(err) {
return (err.status === 401) ?
/* Authenticate here [Step 2] */
/* Send new JWT to API [Step 3] */
/* If successful make original request again [Step 4] */
:
Observable.throw(err);
}
function redirectToSignIn() {
/*I will redirect here*/
}
これまでのところ、ステップ 1、2、および 3 を完了することができましたが、ステップ 4 を追加する方法がわかりません。完全に的外れかもしれませんが、どんな助けも素晴らしいでしょう!