2017-08-28 3 views
0

Ich versuche, eine eingeschränkte Route mit react-router v4 zu implementieren, und ich bin fast fertig, aber ich muss Validierung von JWT-Token zu behandeln und weiß nicht, wo Sie dies setzen.Umgang mit JWT-Authentifizierung in React App

RestrictedRoute

const RestrictedRoute = (props) => { 
    const { component, ...otherProps } = props; 
    return <Route {...otherProps} component={component} />; 
}; 

const mapStateToProps = state => ({ 
    authenticated: state.authentication.session, 
}); 


const branched = branch(
    ({ authenticated }) => !authenticated, 
    renderComponent(() => <Redirect to="/login" />), 
); 

const enhanced = compose(
    connect(mapStateToProps), 
    branched, 
)(RestrictedRoute); 

export default enhanced; 

Also mit diesem Ich bin in der Lage Benutzer /login Seite zu umleiten, wenn die state.authentication.session-false gesetzt. Bis jetzt überprüfte ich, ob es einen jwt Cookie gibt und setze diesen session basierend darauf. Dies hatte eine einfache Sicherheitslücke, da Sie jwt Cookie mit einem beliebigen Wert hinzufügen konnten, und Sie werden als authentifiziert betrachtet.

Ich habe einen Endpunkt für die Validierung meines Tokens jwt erstellt und eine Aktion dafür erstellt. Meine Frage ist - wohin?

Wenn ich habe dies in componentWillMount von RestrictedRoute und ein authentifizierter Benutzer versucht, eine eingeschränkte Seite besuchen er die login Seite zeigte und wechselte dann auf den eingeschränkten Weg, wie die Antwort von dem Endpunkt ändert die redux speichern.

Antwort

1

Möchten Sie Ihr Token in jedem Ihrer RestrictedRoute validieren? Warum?!

Sie müssen Ihr Token nicht für die Änderung einer Route validieren, selbst wenn Ihre Reaktionsroute eingeschränkt ist.

Sie müssen Ihr Token validieren, um Daten auf dem Server zu erhalten, indem Sie eine Richtlinie oder Middleware für diese API schreiben.

mit dieser Methode können Sie nur ein Cookie für validate Überprüfung es in reagieren Route .. wenn Hacker die Daten auf Ihrem Cookie setzen, können sie den Zugriff auf diese reagieren Route, aber sie kann nicht die Daten

+0

Dank sehen für die Antwort. Ich habe es gehandhabt, indem ich das Token auf dem Server (wie ich serverseitiges Rendering) validiere und die Daten an meinen Redux-Speicher übergebe. – Ancinek

+1

Ihre Begrüßung @Ancinek –