Angular, Пользователь аутентифицируется при входе в систему, но не направляется на панель управления. Удаление AuthGuard работает - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в angular и провожу в сети от 2 до 3 часов, пытаясь перейти от входа к панели управления, если пользователь аутентифицируется. Я могу перейти на панель управления, если я не могу активировать пользователя: [AuthGuard]. Однако как только я добавляю canActivate: [AuthGuard], я застреваю на странице входа в систему (хотя я вижу вход пользователя в консоль firebase). Это просто не ведет меня к странице панели управления

Мой код ..

app-routing.module.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { DashboardComponent } from './components/dashboard/dashboard.component';
import { AuthGuard } from './shared/guard/auth.guard';
//import { SecureInnerPagesGuard } from "./shared/guard/secure-inner-pages.guard.ts.guard";
//import { HomeComponent } from './components/home/home.component';
import { SignInComponent } from './components/sign-in/sign-in.component';
import { from } from 'rxjs';

const routes: Routes = [
  { path: '', redirectTo: '/sign-in', pathMatch: 'full'},
  { path:  'sign-in',component:  SignInComponent},
  { path:  'dashboard', component:  DashboardComponent, canActivate: [AuthGuard] },
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

auth .guard.ts

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';
import { AuthService } from  '../../auth/auth.service';
import { Router } from '@angular/router';

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate {

  constructor(
    public authService: AuthService,
    public router: Router
  ){ }
  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
      if(this.authService.isLoggedIn !== true) {
        this.router.navigate(['sign-in']);
      }
      return true;
  }

}

Я также добавил [AuthGuard] в Providers of app.module.ts Любая помощь приветствуется

1 Ответ

0 голосов
/ 19 июня 2020

похоже, что ваше условие if (this.authService.isLoggedIn! == true) возвращает true, и ваше приложение переходит на маршрут sign-in. проверьте, становится ли this.authService.isLoggedIn истинным после успешного входа в систему.

Также вам не нужно if(this.authService.isLoggedIn !== true), вы можете просто использовать if(!this.authService.isLoggedIn).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...