Ich bin neu zu reagieren und zu lernen, wie zu reagieren-Router Routing zu erreichen. Als Teil meiner Beispiel-App habe ich versucht, einen Authentifikator auf jedem Pfad zu platzieren, der Teil der Website ist. Ich verfolge dieses Beispiel: https://github.com/reactjs/react-router/blob/master/examples/auth-flow/app.jsReact Router und Authentifizierung
Und hier ist mein Beispielcode:
render(
<Router history={browserHistory}>
<Route path="/" component={App} onEnter={requireAuth}>
<IndexRoute component={Home}/>
<Route path="login" component={Login}/>
<Route path="logout" component={Logout}/>
<Route path="about" component={About}/>
<Route path="inbox" component={Inbox}/>
</Route>
</Router>,
document.getElementById("app"));
Und hier ist das, was requireAuth tut:
function requireAuth(nextState, replace) {
if(!auth.isUserLoggedIn()) {
replace({
path: "/login",
state: {nextPathname: nextState.location.pathname}
});
}
}
Der Unterschied zwischen dem, was ich tue und was Das Beispiel ist, dass das Beispiel die Auth-Funktionalität nur auf eine Route (Dashboard) legt, wo ich sie auf jede Route setzen möchte. Aber das Beispiel hört auf zu arbeiten und beginnt mit der Fehlermeldung "Maximale Call-Stack-Größe überschritten" und ich denke zu Recht, weil/login eine Unterroute von/ist und weil requireAuth auf die Unterroute umleitet, versucht es einfach erneut zu authentifizieren und versucht es weiter je. Ich vermisse hier wahrscheinlich eine einfache Lösung, um das zu erreichen, aber ich bin nicht in der Lage herauszufinden, was der beste Weg ist. Was kann ich tun, um die Authentifizierung auf jeder Ebene der Site zu aktivieren?
Danke, das sehe ich auch im Beispiel. Aber wie ich in meiner Frage erwähnt habe, möchte ich jeden Weg authentifiziert machen, bevor er zugänglich ist.Sie müssen es also auf jeder Route aktivieren (vermeiden Sie es, die Methode onEnter explizit auf jede Route außer der Anmeldung zu setzen). – KumarM