2016-06-27 2 views
1

Wie kann ich nur öffentliche (d. H. Home, About, Authentifizierungskram) anzeigen, wenn der Benutzer nicht angemeldet ist?Öffentliche Logik anzeigen, wenn der Benutzer nicht authentifiziert wird JS- und Knoten-API reaktivieren

Ich weiß SPA's sind nicht zum Aktualisieren gedacht, aber ich möchte, dass es die meisten Skripte auf der Seite ändert.

Umgebung: Verwenden von ReactJS, WebPack mit einer vorhandenen NodeJS-API, beide in separaten Projekten.

Ich ging durch die Dokumentation von Webpack und verstand, dass es nur die erforderlichen Skripts und Komponenten lädt, aber alle Skripts können mit "View Page Source" gesehen werden. Wenn ich es falsch verstanden habe, korrigiere mich bitte.

+1

Ein Beispiel: https://github.com/EcutDavid/simple-reddit/blob/master/client/components/Header.js#L16 –

Antwort

1

Im Idealfall verfolgen Sie, ob der Benutzer angemeldet ist oder nicht, indem Sie irgendwo in Ihrer Anwendungszustandsstruktur ein sessiontoken speichern. Sie können etwas wie Redux verwenden, um den Status in Ihrer Anwendung zu verwalten. Sie müssen zuerst entscheiden, auf welche Route Sie umleiten müssen, wenn der Benutzer nicht angemeldet ist. & fordert eine Route an, die eine Authentifizierung erfordert. Nehmen wir an, Sie haben 2 Routen /Login und /Produkte. Sie möchten sicherstellen, dass nur authentifizierte Benutzer den Abschnitt/products anzeigen können. Die Art und Weise, wie Sie dies erreichen, geschieht durch Umleiten zu/login, indem der sittytoken-Wert Ihres Status überprüft wird, den Sie als Props an Ihre Products-Komponente übergeben können, die der Route/products zugeordnet ist.

Verwendung so etwas wie reagieren-Router

In der etwas Komponente Verwendung Produkte wie unten

class Products extends Component{ 
    componentWillUpdate(nextProps, nextState, nextContext) { 
     let {sessiontoken}=nextProps; 
     if (!sessiontoken) 
      nextContext.router.push('/login'); 
    } 
} 

Products.contextTypes = { 
    router: React.PropTypes.object.isRequired 
} 

In dem obigen Code wir den Wert von session lesen, die als Requisiten aus einem höheren geben wird Containerkomponente bestellen Falls es kein sessiontoken gibt, wird es nach/login umgeleitet. Solange Ihre APIs ein HTTP 401 bei einem ungültigen sessiontoken zurückgeben, funktioniert dies perfekt für Sie und Sie brauchen sich keine Sorgen zu machen, dass die Leute die Seitenquelle sehen können.

+0

Ich war besorgt über den Quellcode zur Verfügung und dass ich keine Sicherheit nahm auf eine Produktionsebene. Vielen Dank! – Will

Verwandte Themen