AuthGuard 在星云中总是错误的

我使用 ngx admin 创建使用 nebular 的管理面板,我按照这个文档添加 authGard:
docs

这可以自定义登录:
docs2

所有的事情都是真实的,我得到了成功的信息:

http://img3.mukewang.com/628f2d950001818406470115.jpg

但我在 autogard 中弄错了:

http://img2.mukewang.com/628f2da00001c78b24790250.jpg

我使用的代码:


@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' },

];


呼如林
浏览 132回答 1
1回答

慕哥6287543

问题解决了。文件说响应应该是这样的:{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.forRoot 中使用它: token: {           key: 'data.access_token',         }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript