Как создать аутентификацию на определенных вкладках - PullRequest
0 голосов
/ 07 мая 2020

Я только что создал новый проект ioni c с вкладками шаблонов Starter, затем я хочу аутентифицироваться только на вкладке 3, но когда я объявляю canActivate: [AuthGuardService] на вкладках маршрутов, я не могу получить доступ к вкладкам 3, если значение auth ложный. поскольку доступ к другим вкладкам можно получить без аутентификации. это мой код tabs-routing.module.ts

AuthGuardService] on routes tabs, I can’t access tabs 3 if auth value is false. because other tabs can be accessed without requiring authentication.
this is my code

tabs-routing.module.ts

const routes: Routes = [
  {
    path: 'tabs',
    component: TabsPage,
    children: [
      {
        path: 'tab1',
        children: [
          {
            path: '',
            loadChildren: () =>
              import('../tab1/tab1.module').then(m => m.Tab1PageModule)
          }
        ]
      },
      {
        path: 'tab2',
        children: [
          {
            path: '',
            loadChildren: () =>
              import('../tab2/tab2.module').then(m => m.Tab2PageModule)
          }
        ]
      },
      {
        path: 'tab3',
        canActivate: [AuthGuardService],  /* <-- check auth */
        children: [
          {
            path: '',
            loadChildren: () =>
              import('../tab3/tab3.module').then(m => m.Tab3PageModule)
          }
        ]
      },
      {
        path: 'tab4',
        children: [
          {
            path: '',
            loadChildren: () =>
              import('../tab4/tab4.module').then(m => m.Tab4PageModule)
          }
        ]
      },
      {
        path: '',
        redirectTo: '/tabs/tab1',
        pathMatch: 'full'
      }
    ]
  },
  {
    path: '',
    redirectTo: '/tabs/tab1',
    pathMatch: 'full'
  }
];

auth-guard.service.ts

export class AuthGuardService implements CanActivate{

  constructor(
    private authService: AuthenticationService,
  ) { }

  canActivate(): boolean{
    return this.authService.isAuthenticated();
  }
}
...