【发布时间】:2021-05-08 23:30:44
【问题描述】:
我有一个应用程序,其中我有两个登录名,一个用于superAdmin,另一个用于“管理员”。
-
我有几个页面一个是常见的(主页),两个用户都有多余的。
-
然后我还有其他几个页面,其中一些是
admin,而另一些是superAdmin。 -
现在,当我打开我的页面时,我正试图走“/”这条路线(我的家路线)。 我想要做什么
-
现在,如果我以管理员身份登录并且管理员用户在地址栏中输入一些
superAdminurl,我希望将其重定向到当前管理员路由 -
superAdmin也一样 -
我想限制的两个用户都超出了彼此的路线
-
如果我是管理员用户或超级管理员用户并尝试登录并尝试过多的经过身份验证的路由,我应该被重定向到主页
我做了什么
我在这里创建了一个组件(动态路由),我正在检查用户正在尝试做什么。
在我的路由文件中的 route.js 中,我将 props 传递为 guest,superAdmin 和 admin
Dynamicroute.js 代码
我已经创建了我的上下文来存储用户登录后
export default function Dynamicroute(props) {
const { user } = useAuthState(); // this I am getting from my context
console.log(user);
if (props.partner && !user) {
console.log('admin not logedin');
return <Redirect to="/admin" />;
} else if (props.admin && !user) {
console.log('superAdmin not loged in');
return <Redirect to="/superAdmin" />;
} else if (props.admin && user.role === 'admin') {
console.log('admin logedin');
return <Redirect to="/admin_home" />;
} else if (props.admin && user.role === 'superAdmin') {
console.log('super admin loged in');
return <Redirect to="/superadmin_home" />;
} else if (props.guest && user) {
console.log('guest');
return <Redirect to="/" />;
} else {
return <Route component={props.component} {...props} />;
}
}
我的 route.js
<DuynamicRoute exact path="/" component={Home} guest />
<DuynamicRoute path="/admin" component={loginAdmin} guest />
<DuynamicRoute path="/superAdmin" component={loginSuperAdmin} guest />
<DuynamicRoute path="/admin_home" component={admin_home} admin/>
<DuynamicRoute path="/superAdmin_home" component={superAdmin_home} superAdmin/>
我面临的问题
我不知道我面临的问题是在登录时将我重定向到该路由但内容未加载 如果我在该页面上控制台某些内容,我无法获得该内容,则该页面将变为空白。
I am following this lecture from 25:00 timing
已编辑
请检查一下
编辑
admin 和 super admin 将在不同的浏览器中登录,所以只是不希望 admin 访问 super admin,反之亦然,如果他们输入 url 对方的溃败
【问题讨论】:
-
嘿,你可以尝试使用 Window.location,而不是返回
直接使用 window.location,因为我看到你正在使用 react,使用 window .location 将带你到正确的地方,让我知道 window.location 是否正常工作,我会发布一个完整的关于它的 sn-p :) -
您是否定义了
/admin_home路由?我可以看到您的 url 地址指向该路由,但我在这里的代码示例中没有看到它。 -
@froston 抱歉打错了,我编辑了答案
-
请注意,
component={props.component}是无用的。/admin_home路由是否在您的应用程序中定义? -
@Olivier 是的,当然它是定义的,实际上它甚至没有带我去任何只显示空白页面的路线。
标签: javascript reactjs react-router react-hooks react-router-dom