Ich baue eine App mit einer Sitzung Countdown, der nach der Anmeldung auf 3600 gesetzt wird.Angular 2 + ngrx: Implementieren Session-Timer
Wenn der Timer 60 erreicht, sollte die App den Benutzer darauf hinweisen, die Sitzung zu verlängern. Wenn der Timer 0 erreicht, sollte sich die App ausloggen.
Einige Anfragen (POST) setzen den Sitzungstimer zurück, andere nicht.
Ich habe eine auth.reducer
, die Fälle wie Login, Login_Success usw. behandelt und eine auth.effect
Klasse, wo ich Sitzungsdauer auf die tatsächliche Dauer vom Server zurückgegeben.
Meine Fragen sind:
wo ich setzen und die
Observable.timer/interval
starten? Ich habe folgende Möglichkeiten:dashboard.component
auth.effects
auth.service
erstelle ich eine Aktion
DECREMENT_TIMER
oder erstelle ich gerade eine AktionTIMER_TIMEOUT
wenn der beobachtbare den Countdown beendet?Wie soll ich den AuthState formatieren? Habe ich einen
sessionSecondsLeft
Zähler, der jede Sekunde umDECREMENT_TIMER
dekrementiert wird oder ist es besser, nur eine Eigenschaftcountdown_at_60
undcountdown_finished
zu haben?
Was ist die beste Praxis dafür?
Vielen Dank für Ihren Kommentar. Ich verstehe, dass ich einen anderen Timer implementieren müsste, der von 3600 - 60 herunterzählt, um die TIMER_RESET-Aktion aufzurufen. Ich habe jedoch eine Frage. Wo würde ich diesen Timer setzen? autor.service oder dashboard.component? –
Nun, nein. Nachdem 'TIMER_RESET' gefeuert wurde, wird das erste Observable 'TIMER_WARNING' nach 59 Minuten und das zweite nach einer Minute' TIMER_EXPIRED' versenden. 'Observable.concat()' abonniert die übergebenen Observables _in sequence_. Wenn zuvor ein anderes 'TIMER_RESET' gesendet wird, werden beide Timer für neue gelöscht. – j2L4e
Ok ich sehe jetzt, ich rufe timer_reset nach login_success oder nach jeder POST-Anfrage. Vielen Dank. –