Ich verwende nodejs und gebe normalerweise csrf-Token wie folgt weiter:
util.js
%Vor%app.js
%Vor%und dann auf der ejs Seite würde ich
machen %Vor%Aber jetzt benutze ich flux / react für mein Frontend und muss ein csrf-Token für eine Formularübergabe übergeben und nicht sicher, wie das geht. Es gab eine ähnliche Antwort hier mit Jade:
Allerdings benutze ich ejs (mit jsx) (oder nur html) und möchte nicht jade
verwenden Ich habe herausgefunden, dass der beste Weg, dies in React zu tun, darin besteht, das csrf
-Token zu einem Geschäft hinzuzufügen oder es an den Komponentenkontext zu übergeben.
Sie können sehen, wie es funktioniert, indem Sie den Yahoo Fluxible-React-Router etwas verändern Beispiel .
%Vor% Dies führt eine Flussaktion mit dem Token csrf
als Parameter aus. Die Yahoo Flux-Architektur serialisiert die Werte des Geschäfts über:
var exposed = 'window.App=' + serialize(app.dehydrate(context)) + ';';
Dies wird in einem Skript-Tag auf die Seite geschrieben, auf den dann im clientseitigen Javascript zugegriffen werden kann. Es sieht ungefähr so aus:
%Vor%Hier ist die Html.jsx-Komponente im Flux-Beispiel .
Wenn Sie keine isomorphe Anwendung erstellen (die React-Komponenten werden sowohl auf dem Server als auch auf dem Client ausgeführt), würde ich vorschlagen, einfach ein Skript-Tag mit dem csrf
-Token auszugeben.
Bei Fluxible ist dieser Wert dann auf dem Client rehydriert .
%Vor% Sie erhalten einen befüllten Speicher auf dem Client ohne eine zusätzliche HTTP-Anforderung . Sie können dann von überall auf das csrf
-Token zugreifen, indem Sie auf den Speicher zugreifen.
Sie können es über den Kontext übergeben, indem Sie Folgendes tun:
%Vor%Sie können dann über die Props der Komponente darauf zugreifen.
this.props.context.csrf
Wenn du Fluxible verwendest und es über den Kontext weitergeben möchtest, würde ich es vielleicht in einem Plugin machen, aber du kommst auf die Idee.
Vollständiger Servercode:
%Vor%Etwas durch die Vorlage in React zu geben ist ein wenig fummelig. Es ist möglicherweise besser, einfach einen Ajax-Aufruf für das CSRF-Token einzurichten.
Dieser Link erläutert, wie man es mit Django und jQuery macht, aber die Konzepte sollten schön tragbar sein.
Tags und Links reactjs reactjs-flux flux