react-admin
将<Dashboard>
加载到基本"/"
。因此,默认情况下不会打开自定义页面,因为<Admin>
始终会路由到仪表板。我已经实现了<PrivateRoutes>
以处理authentication
,这是成功的。默认情况下会加载<Login>
页面,并且在进行身份验证后,它会路由到仪表板。
挑战:此过程破坏了侧边栏<links>
的功能,例如“用户”。
// CustomRoutes.js
export default [
<Route exact path="/login" component={LoginPage} noLayout />,
<Route exact path="/forgot-password" component={ForgotPassword} noLayout />,
<Route exact path="/confirm-password" component={ConfirmForgotPassword} noLayout />,
<PrivateRoute path="/" loggedIn={localStorage.getItem("access_token")} component={dashboard} />
];
然后...
// PrivateRoute.js import React from "react"; import { Redirect, Route } from "react-router-dom"; const PrivateRoute = ({ path, component: Component, ...rest }) => { const isLoggedIn = localStorage.getItem("access_token"); return ( <Route path={path} {...rest} render={props => isLoggedIn ? <Component {...props} /> : <Redirect to={{ pathname: "/login", state: { from: props.location } }} /> } /> ); }; export default PrivateRoute;
这里是在主react-admin将<App>
中的外观>
// App.js const App = () => ( <Admin theme={myTheme} dashboard={dashboard} authProvider={authProvider} dataProvider={dataProvider} customRoutes={customRoutes} loginPage={LoginPage} logoutButton={LogoutButton} forgotPassword={ForgotPassword} > <Resource name="users" list={UserList} create={UserCreate} show={UserShow} icon={UserIcon} /> </Admin> ); export default App;
[请注意
<resource>
“用户”无效。我也需要为此添加自定义路线吗?
装入基数“ /”。因此,默认情况下不会打开自定义页面,因为
好的,让我们逐步调试一下: