Redux la persistance de l'état avec une base de données
De la discussion ici il semble que l'état de Redux réducteurs doivent être conservées dans une base de données.
Comment fonctionne quelque chose comme l'authentification de l'utilisateur fonctionne dans ce cas?
Ne serait pas un nouvel état de l'objet sera créé pour remplacer le précédent de l'état dans la base de données pour chaque utilisateur (et leur état de l'application), créé et édité?
En utilisant l'ensemble de ces données sur l'extrémité avant et constamment mise à jour de l'état dans la base de données soit performant?
Edit: j'ai créé un exemple Redux auth projet qui arrive aussi à illustrer universelle Redux, et en temps réel la mise à jour avec Redux, Socket.io et RethinkDB.
OriginalL'auteur hoodsy | 2015-11-16
Vous devez vous connecter pour publier un commentaire.
Afin de préserver l'état ou pas, c'est probablement pas une préoccupation de Redux. C'est plus à la logique de l'application.
Si quelque chose se passe dans une application, comme le téléchargement de données à un serveur, évidemment vous avez besoin pour économiser de l'état (ou une tranche de l'état à un serveur).
Depuis les appels réseau sont asynchrones, mais Redux est synchrone, il faut introduire de middleware, comme redux-thunk ou redux-la promesse.
Comme inscrivez-vous exemple, vous avez probablement besoin que les actions,
Une partie de l'etat, par exemple, l'utilisateur de l'objet après l'autorisation, peut être stocké à
localStore
et ré-hydratés sur la prochaine exécution de l'application.OriginalL'auteur Alexander Beletsky
Ces préoccupations sont valables. À l'aide de
localStorage
persistent à l'état sur le frontend pourrait être une meilleure stratégie. Vous pouvez mettre en œuvre ce à l'aide du middleware, par exemple:Si vous êtes préoccupé par l'ennemi l'accès de l'utilisateur, d'ordinateur portable et de voler les informations d'identification à partir de ce que vous pourriez persistent etat à l'arrière-plan lorsque l'utilisateur quitte la page (
Navigator.sendBeacon()
pourrait être utile ici) & de les stocker dans la session.Absolument! Vous auriez encore envie de stocker des informations sur le backend,
localStorage
est transitoire et vous ne devriez pas supposer de données va durer plus de 30 jours. Les cas d'utilisation pourlocalStorage
inclure le stockage auth jetons, la page en cours, les données sont chargées à partir du backend (pour éviter de recharge). Redux état contient beaucoup de ces qui est pourquoi réhydratant entre le chargement de la page a du sens. Le stockage des données sur le backend est souvent nescersary, parfois, une approche différente a plus de sens.local de stockage doit jamais être utilisé pour stocker les informations d'authentification comme elle est très vulnérable aux attaques XSS => local de stockage n'est pas spécifique au domaine de sorte qu'un attaquant n'a pas encore d'injecter un script dans votre site pour y accéder - ils peuvent être une victime innocente d'aller à
{$someEvilDomain}.com
puis exécuter un script à partir de là que l'accaparement des tout dans le stockage localLa surveillance de ma part concernant la vulnérabilité XSS. Mais comment voulez-vous accéder à la croix-domaine localStorage?
en fait mon souvenir était incorrect - vous ne pouvez pas vous énumérer toutes les clés dans tous les domaines, mais vous pouvez cibler des domaines spécifiques par le biais de certains iFrame sourcery, mais la ligne de fond est de stocker les données d'authentification dans le local de stockage (ou de toute information à caractère sensible) est généralement mal vu par la sécurité des gens
OriginalL'auteur Ashton War