2017-09-19 4 views
-1

Ich habe eine Anwendung mit reagieren und redux.wie man redux speichert, um cookies zu hören?

Ich möchte meine Redux speichern, um Cookies zu hören.

Immer wenn der Cookie nach einer bestimmten Zeit abgelaufen ist, möchte ich eine Aktion versenden, die auch den entsprechenden Speicherwert aktualisiert.

Zum Beispiel Wenn sich der Benutzer bei der Site anmeldet, sagen wir, dass wir ein Authentifizierungstoken generieren und wir es in Cookie speichern und eine Ablaufzeit von 2 Stunden festlegen möchten.

Sobald die 2 Stunden abgeschlossen ist, möchte ich eine Aktion versenden, die die redux Speicherdaten „IsAuthenticated“ auf false wie diese

export const user(state ={}, action) 
{ 
    case "cookie_expired": 
    return {...state, isAuthenticated: false} 
} 

So dass ich

Das Reduktionsmittel kann aktualisiert aussehen haben einzelne Quelle der Wahrheit, dh redux Speicher, der auch

setInterval versucht mit Cookies hören kann, kann ich die Verfügbarkeit ab Cookie beobachten, aber das wird ein Workaround sein.

Gibt es einen Redux-Weg, um dies zu erreichen?

+0

Es gibt kein eingebautes Event oder Callback für Cookie-Ablauf oder Wertänderung. SetInterval scheint die einzige Option zu sein. – Fawaz

+0

Kann der Downvoter den Grund für die Ablehnung mitteilen? – rider

Antwort

0

Ich würde stattdessen nur einige Datetime Wert in Redux, sessionValidUntil, zu dem Zeitpunkt speichern, wenn Sie isAuthenticated auf True zuweisen. Stellen Sie diesen neuen Wert auf die aktuelle Zeit + 2 Stunden ein.

Dann, wo immer Sie derzeit überprüfen isAuthenticated, würde ich stattdessen eine neue Funktion überprüfen, die so aussieht;

(reduxState) => { 
    return (reduxState.isAuthenticated && new Date() < reduxState.sessionValidUntil); 
} 
+0

yeah .. das ist, was der ganze Punkt ist, ich möchte nicht überprüfen, obAuthenticated. Immer wenn der Cookie abgelaufen ist, möchte ich, dass mein Reduxspeicher automatisch aktualisiert wird. – rider

+0

Haben Sie die ganze Antwort gelesen, die ich gepostet habe? – gravityplanx

+0

sagen wir isAUThenticated ist auf wahr gesetzt und SessionValidUntil ist auf einige Zeit gesetzt. Jetzt können alle Komponenten bereits gerendert werden und keine Komponente wird aktualisiert. jetzt, auch wenn ich den Wert auf (reduxState.isAuthenticated && new Date() rider

Verwandte Themen