Angular 从 kerberos 身份验证中获取数据

标签 angular kerberos angular-route-guards

我有一个带有后端的 Angular 应用程序。在应用程序启动之前,身份验证由浏览器使用 Kerberos 管理。响应包含其中包含 Angular 色的 JWT。

我的方法是在应用程序开始获取用户凭据时对服务器进行额外的 HTTP 调用。这是通过 app.module.ts 中的 APP_INITIALIZER 实现的,因此当应用程序启动时我已经有了凭据。

providers: [
    ...,
    {
      provide: APP_INITIALIZER,
      useFactory: Utilitys.authServiceFactory,
      deps: [AuthenticationService],
      multi: true   
    }]

这工作正常。 但我的问题是:我是否必须进行额外的调用,或者有没有办法从浏览器请求中获取响应?

如果是怎么可能?

如果否 APP_INITIALIZER 是否是仅获取一次数据的推荐方法?或者我应该使用执行 HTTP 调用的 route guard 来保护所有路由吗?

最佳答案

要仅在您的应用程序启动后获取数据,您也可以使用 Route Guards 执行此操作。

你可以像这样定义一个由路由守卫保护的无组件路由:

// Route Guard
canActivate(): boolean | Promise<boolean> | Observable<boolean> {
    if (this.yourService.isAuthenticated()) {
      return true;
    }
    return this.loginService.login();
}

// Routes
{
    path: '',
    canActivate: [AuthGuard],
    children: [
      { path: 'comp1', component: Comp1 },
      { path: 'comp2', component: Comp2 },
      ...
    ]
}

这样每条路线都受到您的保护,您可以检查您的用户是否已登录/通过身份验证以访问您的应用程序。

请注意,您的常规组件将是无组件 protected 路由的子组件。

关于Angular 从 kerberos 身份验证中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49003359/

相关文章:

angular - CanLoad 守卫可以在 Electron 应用程序中使用吗?

angular - ngOnDestroy 在退出前警告用户

Angular 渲染链接

java - SrcName 为空的 GSSContext

kerberos 票证到期时 Java 客户端挂起

java - 多个领域

angular - 将多个模块路由到同一路径

Angular 2 辅助路线首次有效,但在后续点击中无效

angular - 在另一个管道中注入(inject) AsyncPipe

angular - 单版本更新 Angular