代码之家  ›  专栏  ›  技术社区  ›  Sinan Samet

CanActivate返回空白页而不是重定向

  •  0
  • Sinan Samet  · 技术社区  · 6 年前

    我的警卫把我送回一个空白页,而不是重定向我。另外,我的根不是一个空白页,它也应该发送我登录。当我去任何地方 supervisor 页。

    以下是我的路线:

    export const appRoutes: Routes = [
      {path: '', component: LoginScreenComponent},
      {path: 'login', component: LoginScreenComponent},
      {path: 'student', component: StudentDownloadComponent, canActivate: [StudentGuard]},
      {path: 'student/download', component: StudentDownloadComponent, canActivate: [StudentGuard]},
      {path: 'student/upload', component: StudentUploadComponent, canActivate: [StudentGuard]},
      {path: 'supervisor', component: SupervisorUploadComponent, canActivate: [SupervisorGuard]},
      {path: 'supervisor/upload', component: SupervisorUploadComponent, canActivate: [SupervisorGuard]},
      {path: 'supervisor/logs', component: SupervisorLogsComponent, canActivate: [SupervisorGuard]},
      {path: 'supervisor/overzicht', component: SupervisorOverzichtComponent, canActivate: [SupervisorGuard]}
      ];
    

    这是我的警卫:

    @Injectable()
    export class SupervisorGuard implements CanActivate {
      constructor(private supervisor: AuthService, private router: Router) {}
    
      canActivate(
        next: ActivatedRouteSnapshot,
        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
        if (this.supervisor.getSupervisorLoggedIn()) {
          return true;
        } else {
          this.router.navigate(['/login']);
          return false;
        }
      }
    }
    

    服务:

    @Injectable()
    export class AuthService {
      private isStudentLoggedIn;
      private isSupervisorLoggedIn;
    
      constructor() {
        this.isStudentLoggedIn = false;
        this.isSupervisorLoggedIn = false;
      }
    
      setStudentLoggedIn() {
        this.isStudentLoggedIn = true;
      }
    
      getStudentLoggedIn() {
        return this.isStudentLoggedIn();
      }
    
      setSupervisorLoggedIn() {
        this.isSupervisorLoggedIn = true;
      }
    
      getSupervisorLoggedIn() {
        return this.isSupervisorLoggedIn();
      }
    
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   user184994    6 年前

    在服务中,您试图调用 isSupervisorLoggedIn 好像它是一个函数,但它只是一个布尔值。

    你应该这么做 return this.isSupervisorLoggedIn; 相反