File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
'use client';
import { useEffect } from 'react';
/**
* 로그아웃·세션 만료 후 뒤로가기 시 bfcache(back/forward cache) 복원으로 보호 페이지의
* 데이터가 재요청 없이 다시 보이는 것을 막는 최후 방어선. `no-store` 응답 헤더만으로는
* 일부 브라우저의 bfcache 복원을 막지 못해, `pageshow`의 `persisted` 플래그를 감지해
* 강제로 재요청(reload)시킨다 — 재요청은 proxy/DAL의 세션 검증을 다시 거친다.
*/
export function BfcacheGuard() {
useEffect(() => {
function handlePageShow(event: PageTransitionEvent) {
if (event.persisted) {
window.location.reload();
}
}
window.addEventListener('pageshow', handlePageShow);
return () => window.removeEventListener('pageshow', handlePageShow);
}, []);
return null;
}