Mit Hilfe der RR V4 docs reagieren, dies ist ein Beispiel-Code für PrivateRoute
(oder AuthenticatedRoute
)Wie Sie sich richtig ein JWT authentifizierten Leitwegsuch implementieren auf Router V4
const AuthExample =() => (
<Router>
<div>
<AuthButton/>
<ul>
<li><Link to="/public">Public Page</Link></li>
<li><Link to="/protected">Protected Page</Link></li>
</ul>
<Route path="/public" component={Public}/>
<Route path="/login" component={Login}/>
<PrivateRoute path="/protected" component={Protected}/>
</div>
</Router>
Wo die PrivateRoute
wie umgesetzt werden können:
const PrivateRoute = ({ component: Component, ...rest }) => (
let token - localStorage.getItem('jwtToken');
<Route {...rest} render={props => (
token ? (
<Component {...props}/>
) : (
<Redirect to={{
pathname: '/login',
state: { from: props.location }
}}/>
)
)}/>
)
Meine Zweifel sind:
a) ist es genug, wenn das Token lokal gespeichert ist, zu überprüfen Anwendung machen die compon zu lassen ent?
b) Was passiert, wenn das Token abgelaufen ist, wie kann ich verhindern, dass die neue Komponente geladen wird?
c) Soll ich den Server am Anfang von PrivateRoute
anrufen, um Token Ablauf und Gültigkeit zu überprüfen? Das würde bei jeder Routenänderung einen weiteren Roundtrip zum Server hinzufügen.
d) Was ist der richtige Weg, um das Token zu validieren, ohne den Server zu berühren?
Gleiche Kommentare wie @Sandokan Antwort ... Was für die Routen, die nicht zum Server gehen, um Daten zu holen? ReactJS ist ein SPA auf dem Client ... – Mendes