forked from baron/baron-sso
fix: verify local token in _silentSessionRecovery to prevent 401 loop on expired JWT
This commit is contained in:
@@ -79,8 +79,26 @@ Future<void> _silentSessionRecovery() async {
|
||||
// 1. Local token check
|
||||
final hasLocalToken = AuthTokenStore.hasToken();
|
||||
if (hasLocalToken) {
|
||||
_log.info("[SessionRecovery] Local token found. Skipping recovery.");
|
||||
return;
|
||||
_log.info("[SessionRecovery] Local token found. Verifying session...");
|
||||
try {
|
||||
final status = await AuthProxyService.getSessionStatus(
|
||||
token: AuthTokenStore.getToken(),
|
||||
useCookie: false,
|
||||
);
|
||||
if (status == 401 || status == 403) {
|
||||
_log.warning("[SessionRecovery] Local token is invalid. Clearing store.");
|
||||
AuthTokenStore.clear();
|
||||
return;
|
||||
}
|
||||
_log.info("[SessionRecovery] Local token is valid. Skipping cookie check.");
|
||||
return;
|
||||
} catch (e) {
|
||||
_log.info("[SessionRecovery] Failed to verify local token: $e");
|
||||
// 만약 네트워크 에러 등이라면 당장 로그아웃 시키지 않고 일단 통과시킬 수도 있지만,
|
||||
// 보안과 확실한 상태 갱신을 위해 여기서는 실패 시 상태를 유지하거나 필요에 따라 처리합니다.
|
||||
// (현재는 401/403 확실한 인증 실패시에만 clear 처리)
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
_log.info(
|
||||
|
||||
Reference in New Issue
Block a user