我在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'路由器模块中的参数?
提前致谢!
答案 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'];
});
}
}