AuthGuard всегда ложно в туманности - PullRequest
0 голосов
/ 21 марта 2020

Я использую ngx admin для создания панели администратора, которая использует nebular, я следую этим документам, чтобы добавить authGard:
docs

и это для настройки имени входа:
docs2

все работает верно, и я получаю сообщение об успехе: img

но я получаю false в автогарде:
img2

Код, который я использую:

@NgModule({
  declarations: [
    AppComponent,
  ],
  providers: [
    AuthGuard,
  ],
  imports: [
    ***
  ],
  bootstrap: [AppComponent],
})
export class AppModule {
}

//**********

@Injectable()
export class AuthGuard implements CanActivate {

  constructor(private authService: NbAuthService, private router: Router) {
  }

  canActivate() {
    console.log(this.authService.isAuthenticated());
    return this.authService.isAuthenticated()
      .pipe(
        tap(authenticated => {
          if (!authenticated) {
            console.log(authenticated);
            this.router.navigate(['auth/login']);
          }
        }),
      );
  }
}

//**********

const routes: Routes = [
  {
    path: 'pages',
    canActivate: [AuthGuard],
    loadChildren: () => import('./pages/pages.module')
      .then(m => m.PagesModule),
  },
  {
    path: 'auth',
    loadChildren: () => import('./auth/auth.module').then(m => m.NgxAuthModule),
  },
  { path: '', redirectTo: 'pages', pathMatch: 'full' },
  { path: '**', redirectTo: 'pages' },
];

1 Ответ

1 голос
/ 21 марта 2020

Проблема решена.
В документе сказано, что ответ должен быть таким:

{
data: {
 token: 'some-jwt-token'
  } 
}

Мой ответ:

{
data: {
  access_token: 'some-jwt-token'
  }
}

И в документе пишите, что мы можем изменить (токен ) к другим вещам, подобным этому:

 token: {
           key: 'access_token', // this parameter tells where to look for the token
         }

Но это не так, и мы должны использовать это в NbAuthModule.for Root:

 token: {
           key: 'data.access_token',
         }
...