import React from 'react' import { PageLoading } from '@ant-design/pro-layout' import { Redirect, connect } from 'umi' import { stringify } from 'querystring' class SecurityLayout extends React.Component { state = { isReady: false } componentDidMount() { this.setState({ isReady: true }) const { dispatch } = this.props if (dispatch) { dispatch({ type: 'user/fetchCurrent' }) dispatch({ type: 'global/fetchPermData' }) } } render() { const { isReady } = this.state const { children, loading, currentUser } = this.props // You can replace it to your authentication rule (such as check token exists) // 你可以把它替换成你自己的登录认证规则(比如判断 token 是否存在) const isLogin = currentUser && currentUser.staffId const queryString = stringify({ redirect: window.location.href }) if ((!isLogin && loading) || !isReady) { return } if (!isLogin && window.location.pathname !== '/user/login') { return } return children } } export default connect(({ user, loading }) => ({ currentUser: user.currentUser, loading: loading.models.user }))(SecurityLayout)