Boilerplate: a sign-out is skipped after a sign-in whose push subscription got a 429 (AppClientCoordinator)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- csharp, wasm
- Ambito
- authentication, backend
Direzione di ricerca
Inizia da AppClientCoordinator.PropagateAuthState nel modello Boilerplate e segui come viene aggiornato lastPropagatedUser quando la sottoscrizione push restituisce 429. Controlla i test di propagazione dello stato di autenticazione, se presenti, e aggiungi una verifica per la disconnessione dopo questa restituzione anticipata. Il lavoro è completato quando la disconnessione aggiorna lo stato di autenticazione SignalR e la telemetria utente, e la sottoscrizione push viene ritentata per lo stato anonimo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
In the Boilerplate template (10.7.0, still the same on develop), AppClientCoordinator.PropagateAuthState returns early when the push subscription gets a 429, without setting lastPropagatedUser:
if (await pushSubscription is false)
return;
lastPropagatedUser = user;
lastPropagatedUser is then still the user propagated before this one. When that was the anonymous user, the next sign-out is skipped entirely:
- The app starts signed out.
lastPropagatedUseris the anonymous principal. - The user signs in.
PushNotificationControlleris rate limited (EnableRateLimiting(PUSH_NOTIFICATION)), soSubscribecan answer 429.SubscribeToPushNotificationsreturnsfalseandPropagateAuthStatereturns.lastPropagatedUserstays anonymous;finallyclearspropagatingUser. - The user signs out before any other authentication state change. The new state is
IAuthTokenProvider.Anonymous(), anduser.IsTheSame(propagatingUser ?? lastPropagatedUser)compares two anonymous principals with no claims, whichIsTheSamereports as the same.PropagateAuthStatereturns before doing anything.
Result after the sign-out:
- the SignalR connection is never told (
ChangeAuthenticationStateisn't invoked), so on the server it stays the signed-out user's connection and can keep receiving messages meant for that user; TelemetryContext.UserId/UserSessionId(and App Insights' authenticated user context) keep the signed-out user;- the push subscription isn't re-subscribed for the anonymous state.
Expected behavior
A sign-out always propagates, even when the sign-in before it stopped early on a 429.
Suggested fix
Forget the last propagated user when stopping early, so the next state propagates whatever it compares to. This keeps the intended retry (the same signed-in user propagates again on the next state change):
if (await pushSubscription is false)
{
lastPropagatedUser = null;
return;
}
Version
Bit.Boilerplate 10.7.0; the same code is on develop today.
- Lingua principale
- C#
- Stelle
- 1.4k
- Fork
- 264
- Merge medio
- 10h 48m
- PR unite (30g)
- 425
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di bitfoundation/bitplatform
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
bitfoundation/bitplatform#14070 ·
I maintainer di solito rispondono entro 1 giorno
-
bit Boilerplate's standalone web publish leaves package files uncompressedForse già presa @yasmoradi l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
bitfoundation/bitplatform#14463 ·
I maintainer di solito rispondono entro 1 giorno
-
bit Boilerplate has no place to design a page before its backend existsForse già presa @yasmoradi l’ha presa oggi. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
bitfoundation/bitplatform#14461 ·
I maintainer di solito rispondono entro 1 giorno
-
area / infra
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
bitfoundation/bitplatform#14442 ·
I maintainer di solito rispondono entro 1 giorno
-
Missing stuff from lazy-load features of BlowForse già presa @msynk l’ha presa 1 giorno fa. Apertaarea / blow
bitfoundation/bitplatform#14440 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di bitfoundation/bitplatform
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 76/100
GameShowLDA/AskMkiM#1075 ·
I maintainer di solito rispondono entro 1 giorno
-
kind/bug triage/untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
unoplatform/uno.resizetizer#414 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno