路由配置 routes/admin.js
export default [
{
path: "/admin",
component: Admin,
role: 'user',
}
]
权限判断 routes/AuthRoute.js
import React from 'react';
import { Route, Redirect } from 'react-router-dom';
const AuthRoute = (props) => {
const userRole = "user";
const {
role: routeRole,
backUrl,
...otherProps
} = props;
console.log(routeRole, backUrl, otherProps);
if (userRole && userRole.indexOf(routeRole) > -1) {
return <Route {...otherProps} />
} else {
return <Redirect to={'/'} />
}
}
export default AuthRoute;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Switch } from 'react-router-dom';
import reportWebVitals from './reportWebVitals';
import './index.less';
import AuthRoute from "./routes/AuthRoute";
import allPagesRoute from './routes/index';
console.log(allPagesRoute);
ReactDOM.render(
<Router>
<Switch>
{
allPagesRoute.map(
(route) => {
console.log('index.js', route);
return <AuthRoute key={route.path} {...route}/>
}
)
}
</Switch>
</Router>,
document.getElementById('root')
);
reportWebVitals();
if(module.hot){
module.hot.accept()
}
参考:juejin.cn/post/685705…