我想创建一个复杂的路由器保护来检查用户是否在 Web 应用程序中进行了身份验证,但如果是这样,它还会检查其他条件,并且对于每个真实条件,它都会重定向到一个页面(但是在同一个路由器保护下)。为了更好地在路由器保护内部解释这一点,我必须做这样的事情:
canActivate(state: RouterStateSnapshot) {
if(isAuthenticated()) {
if(!isEmailVerified) {
// redirect to the "check the email" page
}
else if(!isProfileComplete()) {
// redirect to profile completion page
}
else {
// redirect to user homepage
}
return true;
} else {
// redirect login
return false;
}
}
问题实际上是这不起作用,因为每个重定向都会带到受此保护保护的页面,然后每个重定向都会调用另一个重定向,并以无限循环结束。如果 state.url 与我们重定向到条件主体内部的不同,我已经尝试检查条件内部,但这不起作用。有没有一个简单的解决方案来做到这一点?