Auth Guard не работает в angular 5

Вот моя статическая служба входа

login(email: string, password: string) {
debugger;
const user = {
  username: email,
  password: password,

};
if (email === "admin" && password === "admin") {
  localStorage.setItem("currentUser", JSON.stringify(user));
}
if (localStorage.getItem("currentUser")) {
  // logged in so return true
  return user;
} else {
  return false;
}
}

Моя служба безопасности

  export class AuthGuard implements CanActivate {
  constructor(private router: Router) {


  }
        isAuthenticated(): boolean{
      if (localStorage.getItem("currentUser")) {
        return true;
      }
      else{
        return false;
      }
    }

    canActivate(): boolean {
      if (!this.isAuthenticated()) {
        this.router.navigate(['login']);
        return false;
      }
      return true;
    }
}

мой app.routing.ts

const appRoutes: Routes = [
  { path: "home", component: HomeComponent ,canActivate: [AuthGuard]},
  { path: "login", component: AuthComponent },
  { path: "", component: AuthComponent },
  { path: "employees", component: EmpComponent,canActivate: [AuthGuard] },
  // otherwise redirect to home
  { path: "**", redirectTo: "/" }
];

app.module.ts

@NgModule({
  declarations: [AppComponent, HeaderComponent, FooterComponent],
  imports: [
    BrowserModule,
    FormsModule,
    SharedModule,
    HomeModule,
    AuthModule,
    EmpModule,
    routing,
    Ng4LoadingSpinnerModule,
    AlertModule.forRoot()
  ],
  providers: [AuthGuard, AuthenticationService],
  schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
  bootstrap: [AppComponent]
})

Я только что протестировал это, введя маршрут непосредственно в URL-адрес браузера, например / home, у которого в конфигурации маршрута включена функция canactivate, но когда я это сделаю, отображается домашнее содержимое вместо перенаправления на страницу входа. Также нужно знать, что здесь не так, любая помощь буду очень признателен заранее спасибо :)


person Melvin    schedule 09.12.2017    source источник
comment
Я думаю, что проблема в том, что локальное хранилище всегда имеет значения, очистите его и проверьте   -  person Sajeetharan    schedule 09.12.2017
comment
@Sajeetharan, я не вошел в систему, просто набрал маршрут в URL-адресе браузера, для которого включена функция активирования, поэтому в localstorage нет значений.   -  person Melvin    schedule 09.12.2017
comment
странно, могу я увидеть ваш полный код   -  person Sajeetharan    schedule 09.12.2017
comment
у вас уже есть это здесь!   -  person Sajeetharan    schedule 09.12.2017
comment
я имел в виду отладить   -  person Sajeetharan    schedule 09.12.2017
comment
@Sajeetharan какой файл вам нужен полностью? Также у меня нет консольных ошибок   -  person Melvin    schedule 09.12.2017
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Sajeetharan    schedule 09.12.2017


Ответы (2)


Нет проблем с вашим текущим кодом, если у вас есть routing для каждого компонента отдельно, удалите их и оставьте их только в app.module.ts

person Sajeetharan    schedule 09.12.2017

если вы используете защиту маршрута, добавьте его в корневой файл app.module или какой-либо файл module.ts

providers: [AuthGuard]
person Samithe Adhikari    schedule 14.11.2020