启动
-
启动文件: app/src/index.js
加载全局数据模型./models/global
加载全局路由./router
import React from 'react'; import { routerRedux, Route, Switch } from 'dva/router'; import { LocaleProvider } from 'antd'; import zhCN from 'antd/lib/locale-provider/zh_CN'; import { getRouterData } from './common/router'; import Authorized from './utils/Authorized'; import { getQueryPath } from './utils/utils'; const { ConnectedRouter } = routerRedux; const { AuthorizedRoute } = Authorized; // 全局路由配置 function RouterConfig({ history, app }) { const routerData = getRouterData(app); const UserLayout = routerData['/user'].component; const BasicLayout = routerData['/'].component; return ( <LocaleProvider locale={zhCN}> <ConnectedRouter history={history}> <Switch> <Route path="/user" component={UserLayout} /> <!-- 路由权限过滤,如果不是角色或admin或user则重定向/user/login路由 --> <AuthorizedRoute path="/" render={props => <BasicLayout {...props} />} authority={['admin', 'user']} redirectPath={getQueryPath('/user/login', { redirect: window.location.href, })} /> </Switch> </ConnectedRouter> </LocaleProvider> ); }
-
权限过滤
过滤权限文件:./utils/Authorized.js
import RenderAuthorized from '../components/Authorized'; import { getAuthority } from './authority'; let Authorized = RenderAuthorized(getAuthority()); // eslint-disable-line // Reload the rights component const reloadAuthorized = () => { Authorized = RenderAuthorized(getAuthority()); }; export { reloadAuthorized }; export default Authorized;
获取权限文件:./utils/authority.js
// use localStorage to store the authority info, which might be sent from server in actual project. // 重写该方法实现路由权限调整 export function getAuthority() { // return localStorage.getItem('antd-pro-authority') || ['admin', 'user']; // 如果没有权限登录默认guest权限进入登录界面 let authority = localStorage.getItem('antd-pro-authority') || 'guest'; return authority; } export function setAuthority(authority) { return localStorage.setItem('antd-pro-authority', authority); }