Open milantru opened 1 year ago
Update: RevalidatingServerAuthenticationStateProvider
má v sebe metódu RevalidationLoop
, ktorá má volať našu implementáciu metódy ValidateAuthenticationStateAsync
, lenže riadok predtým je await Task.Delay(RevalidationInterval, cancellationToken);
. Keď sa program dostane na tento riadok, preskočí do metódy IDisposable.Dispose
, tam sa zavolá Cancel
na cancellation tokene, čo spôsobí vyhodenie výnimky, tá sa odchytí v catch bloku (volanie ValidateAuthenticationStateAsync
sa preskočilo), v ňom je break, ktorý nás vyhodí z whilu a RevalidationLoop
sa tým končí.
V skratke...
Po zmene auth statu sa zavolá RevalidationLoop
, ktorý by mal zavolať našu implementáciu metódy ValidateAuthenticationStateAsync
, ale namiesto toho pri dojdení na await
sa aktivuje cancellation token, ktorý ukončí RevalidationLoop
. Takže sa nestane nič.
Dôvod volania Dispose
zostáva neznámy.
Ak sa užívateľ prihlási, otvorí nový tab a v novom tabe sa odhlási, tak potom ako sa vráti do prvého tabu vidí, že je stále prihlásený. Myslel som, že použitím triedy
RevalidatingServerAuthenticationStateProvider
by sa problém vyriešil. Po uplynutí času stanovenom vRevalidationInterval
by sa mala volať validácia definovaná vValidateAuthenticationStateAsync(AuthenticationState, CancellationToken)
. Ak sa auth state vyhodnotí ako neplaný (teda validácia vrátilafalse
), tak je uživateľ odhlásený. Lenže z nejakého dôvodu sa spomínaná validačná metóda nevolá.