我有四种不同的布局。
主页布局 - 主页
管理布局
用户布局
代理布局
AdminLayout 是管理相关页面的父级,UserLayout 是用户相关等的父级。我使用高阶组件来检查用户是否未经身份验证,将它们重定向到主页。还有一个条件。也就是说,如果用户经过身份验证,但如果用户的角色不是管理员并且用户尝试访问 AdminDashboard,他/她应该被重定向到主页,并且与其他人类似。但是 Agent 可以访问 UserDashboard。
我得到的角色是形式
user_role = ['superadmin'] or ['enduser'] or ['agent'] or
['enduser', 'agent'].
除了代理也可以访问代理仪表板和用户仪表板之外,不应访问其他仪表板。对于未经身份验证的用户,我可以在不登录的情况下访问仪表板时重定向到主页
重定向到未经身份验证的用户的代码正在工作,我已经完成了以下方式
const Redirection = prop => WrappedComponent => {
return class Redirection extends React.PureComponent {
render() {
const user_instance = JSON.parse(localStorage.getItem("user"));
if (!user_instance) {
return <Redirect to="/" />;
} else {
return <WrappedComponent {...this.props} />;
}
}
};
};
export default props => WrappedComponent =>
connect(null, mapDispatchToProps)(Redirection(props)(WrappedComponent));
管理布局
class AdminLayout extends React.Component {
render() {
return (
<div>
{this.props.children}
</div>
);
}
}
export default Redirection()(AdminLayout);
我从 localStorage 获得的 user_role 为JSON.parse(localStorage.getItem("user"))['userInfo]['user_role']