我有一个使用Primer-react模板开发的React应用程序。它具有一个管理仪表板,并且在仪表板侧面板中具有多个路由。我在index.js中设置了一个Auth路由,当我转到每个路由时,它都可以正常运行。但是当重新加载页面时,页面显示找不到404页面!
我保护AuthRoute中的“ /”路径,以便保护所有以“ /”开头的路径(我在仪表板内部有诸如“ / usertable”,“ / users”,“ / payments”等路径)。我不确定这里是否发生错误,因为有些路由(仪表板外部)应该在没有Auth的情况下进行访问,例如“ / Signin”。
我假设,如果我可以保护仪表板内每个路由的精确路径(例如精确路径=“ / usertable”)而不是保护所有“ /”路径,那么404问题将得到解决!但是当我这样做时,注销后,我可以通过浏览器“后退”按钮返回到仪表板,这会产生另一个问题。我该如何解决?
index.js
import React from 'react';
import { BrowserRouter, Switch, Route, Redirect } from 'react-router-dom';
import { render } from 'react-dom';
import Auth from './auth';
import AppProvider from './components/AppProvider/AppProvider';
import Dashboard from './containers/Dashboard';
import { ForgotPassword, Signin, ResetPassword } from './pages';
import registerServiceWorker from './registerServiceWorker';
const AuthRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={props => {
if (Auth.isAuthenticated()) {
return <Component {...props} />
}
else {
return <Redirect to={{ pathname: '/signin' }} />
}
}} />
)
export default render(
<AppProvider>
<BrowserRouter>
<Switch>
<Route exact path="/forgot" component={ForgotPassword} />
<Route exact path="/signin" component={Signin} />
<Route exact path="/reset/:token?" component={ResetPassword} />
<AuthRoute path="/" component={Dashboard} />
<Route path="/" component={Dashboard} />
</Switch>
</BrowserRouter>
</AppProvider>
, document.getElementById('root'));
registerServiceWorker();
LEATH
慕后森
相关分类