Angular 2, key 斗篷 : securing certain routes

标签 angular keycloak

我有 Angular 2 应用程序,由 Keycloak 保护,通过示例完成 here

我想知道,如何才能确保某些路线的安全。

main.ts:

 KeycloakService.init()
 .then(() => {
   const platform = platformBrowserDynamic();
   platform.bootstrapModule(AppModule);
 })
 .catch(() => window.location.reload());

keycloak.service.ts:

@Injectable()
export class KeycloakService {

  static auth: any = {};

  static loginUser: KeycloakUser;

  static init(): Promise<any> {

  let keycloakAuth: Keycloak.KeycloakInstance = Keycloak('keycloak/keycloak.json');

  KeycloakService.auth.loggedIn = false;

  return new Promise((resolve, reject) => {
    keycloakAuth.init({ onLoad: 'login-required' })
    .success(() => {
      KeycloakService.auth.loggedIn = true;
      KeycloakService.auth.authz = keycloakAuth;

      KeycloakService.auth.logoutUrl = keycloakAuth.authServerUrl + "/realms/demo/protocol/openid-connect/logout?redirect_uri=/angular2-product/index.html";
      resolve();
    })
    .error(() => {
      reject();
    });
   });
 }
 ....

最佳答案

您可以为您的路线使用守卫,我有下一个实现:

app.routes.ts:

export const rs: Routes = [
  { path: 'home',  component: PersonAppComponent, canActivate: [AuthGuard] },
  { path: 'other',  component: LoginComponent },
];

首页是 protected 路线,其他路线可以免费访问。

auth-guard.ts:

@Injectable()
export class AuthGuard implements CanActivate,OnInit {

  constructor(private ck: KeycloakService) {
    console.log("INIT AuthGuard: " + KeycloakService.auth.loggedIn )
  }

  ngOnInit() {

  }

  canActivate() {
    console.log("check guard: " + KeycloakService.auth.loggedIn)
    return KeycloakService.auth.loggedIn;
  }

}

我的 main.ts 是类似的。

希望对您有所帮助。

关于Angular 2, key 斗篷 : securing certain routes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42190178/

相关文章:

html - 有没有办法为我的自定义 Keycloak 电子邮件主题添加样式?

keycloak - 如何从 key 斗篷中的自定义客户端获取角色?

javascript - Observable<void> 不调用订阅者

angular - 如何在 angular2 中模拟 @Input() 对象?

java - Keycloak 管理客户端

moodle - 无法使用 Moodle 的 OIDC 插件使用 Keycloak 登录

css - 将第三方 CSS 与 Ionic 结合使用

angular - 通过 Angular2 中的嵌套组件发出事件

angular - TypeDoc 找不到 Angular2 模块

authorization - Keycloak 将组设置为资源的所有者