Angular2 adal.js - URL中的#id_token

时间:2017-05-03 01:57:43

标签: angular azure angular2-routing adal.js

我在Angular2项目中使用adal.js来验证Azure AD。 AAD身份验证后,id_token被附加到redirectUri,但Angular2不接受url参数中的#id_token。

回复网址
https://localhost:44345/#id_token=some_jwt_token

Angular 2错误消息:
错误:未捕获(承诺):错误:无法匹配任何路线:'' 错误:无法匹配任何路线:''

有没有办法从网址中删除id_token或处理此问题' #id_token'路由器模块中的参数?

提前致谢!

4 个答案:

答案 0 :(得分:0)

在生根文件中添加如下内容:

{ path: 'your_url/:token, component: your_component}

如果你想建立一个链接,你可以使用它:

<a [routerLink]="['/your_url', { token: 'whatever' }]">image a dragon</a>

以防:https://angular.io/docs/ts/latest/guide/router.html#!#basics-router-links

答案 1 :(得分:0)

在MsAdalAngular6Module配置中,将navigationToLoginRequestUrl设置为true

MsAdalAngular6Module.forRoot({ tenant: '...', clientId: '...', redirectUri: "...", endpoints: { "..." }, navigateToLoginRequestUrl: true, <------------ This one cacheLocation: 'localStorage', }),

答案 2 :(得分:0)

我不确定角度2,但我在角度8中遇到了几乎类似的问题。成功登录后,Azure AD重定向用户需要使用#id_token = some_jwt_token的重定向URL。为了解决此问题,我使用了链接https://github.com/sureshchahal/angular2-adal/issues/46

中描述的方法

基本上执行以下操作

build/reports

不要忘记导入位置

 constructor(private location: Location) { }

  ngOnInit() {
    const urlFragments = window.location.href.split('#id_token');
    if (urlFragments.length > 1) {
      this.location.go(this.location.path());
    }
  }

我正在使用

import { Location } from '@angular/common';

希望对您有帮助。

答案 3 :(得分:-1)

您可以使用问号xxxxx /#?id_token = some_jwt_token。 这就是我为我的应用程序SSO所做的。

在您的组件中:

token: string;

constructor(
        private route: ActivatedRoute
    ) {
        this.route.queryParams.subscribe(paras => {
            this.token = paras['id_token'];
        });
      }
}