Я работаю при входе в приложение и создал 2-х стражей для маршрутизации страниц, которые должны идти после и до входа в систему.Метод, который я вызываю внутри CanActivate, выбрасывает именно то, что я хочу.true
, если access_token
существует, и false
, если его нет.Проблема в том, что меня не перенаправляют на нужные мне страницы, даже если я вошел в систему.
Это ошибка, которую я получаю:
ОШИБКА Ошибка: Uncaught(в обещании): Ошибка: недопустимая защита CanActivate Ошибка: недопустимая защита CanActivate
Защита для вещей, которые идут после этого, идут до входа в систему:
import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router/src/utils/preactivation';
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
import { TokenService } from './token.service';
@Injectable({
providedIn: 'root'
})
export class BeforeLoginService implements CanActivate {
path: ActivatedRouteSnapshot[];
route: ActivatedRouteSnapshot;
CanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
console.log(this.Token.loggedIn());
return this.Token.loggedIn();
}
constructor(private Token: TokenService) { }
}
Защита для вещей, которые идутпосле логина:
import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router/src/utils/preactivation';
import { TokenService } from './token.service';
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class AfterLoginService implements CanActivate {
path: ActivatedRouteSnapshot[];
route: ActivatedRouteSnapshot;
CanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot){
console.log(this.Token.loggedIn());
return !this.Token.loggedIn();
}
constructor(private Token: TokenService) { }
}
мой модуль маршрутизации для этой части бизнеса:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { UserBaseComponent } from './users/components/user-base/user-base.component';
import { StaffBaseComponent } from './staffs/components/staff-base/staff-base.component';
import { IndexComponent } from './index/index.component';
import { LoginComponent } from '../core/components/login/login.component';
import { AfterLoginService } from '../core/services/after-login.service';
import { BeforeLoginService} from '../core/services/before-login.service';
const routes: Routes = [
{
path: 'administration',
component: IndexComponent,
children: [
{path: 'users', component: UserBaseComponent, canActivate: [AfterLoginService]},
{path: 'staffs', component: StaffBaseComponent, canActivate: [AfterLoginService]}
],
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class AdminRoutingModule { }
И я уже убедился, что охранники включены в провайдеры.