## 概要 [Task3680: ログアウトせずに認証切れまで待った後にTOPページからログインしようとするとエラーが発生する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3680) - 現象 - ブラウザバック対策のコードで、アクセストークンの寿命を意識せずにログイン後画面に遷移していたため、リフレッシュトークンとアクセストークンの再発行がSkipされた上で寿命が切れたトークンを使うような状態でログイン後画面に遷移してしまっていた - 対応 - /login, /authで、アクセストークンチェック→IdTokenを使ったログイン中プロセスかチェック の順番を変更 - 有効なアクセストークンがあったとしても、再ログインをしてるのであればリフレッシュトークン等の再発行を実施する形に変更 ## レビューポイント - Bugの現象が解消する以外の挙動の変更が発生してしまわないか - 特にブラウザバック等 - 実装方法で問題がありそうな部分はないか - 不要なTokenのクリア等はないか ## UIの変更 - なし ## 動作確認状況 - ローカルで確認 ## 補足 - **可能であればローカルで挙動を確認していただきたいです** - .env.local の `ACCESS_TOKEN_LIFETIME_WEB` を60(=1分)とかにすれば確認はしやすいはず
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { store } from "app/store";
|
|
import React from "react";
|
|
import { createRoot } from "react-dom/client";
|
|
import { I18nextProvider } from "react-i18next";
|
|
import { Provider } from "react-redux";
|
|
import { PublicClientApplication } from "@azure/msal-browser";
|
|
import { msalConfig } from "common/msalConfig";
|
|
import { MsalProvider } from "@azure/msal-react";
|
|
import App from "./App";
|
|
import * as serviceWorker from "./serviceWorker";
|
|
import i18n from "./i18n";
|
|
|
|
const pca = new PublicClientApplication(msalConfig);
|
|
|
|
const container = document.getElementById("root");
|
|
if (container) {
|
|
const root = createRoot(container);
|
|
root.render(
|
|
<React.StrictMode>
|
|
<Provider store={store}>
|
|
<MsalProvider instance={pca}>
|
|
<I18nextProvider i18n={i18n} />
|
|
<App />
|
|
</MsalProvider>
|
|
</Provider>
|
|
</React.StrictMode>
|
|
);
|
|
}
|
|
|
|
// If you want your app to work offline and load faster, you can change
|
|
// unregister() to register() below. Note this comes with some pitfalls.
|
|
// Learn more about service workers: https://bit.ly/CRA-PWA
|
|
serviceWorker.unregister();
|