如何解决在调用Angular构造函数之前捕获查询字符串
我处于使用第三方工具(Strapi)向MSAL进行身份验证的情况。
- 打开Angular网站
- 重定向到Microsoft登录
- 使用有效令牌重定向回Angular应用。
在第2步和第3步之间,有一个来自Strapi的单独访问令牌作为URL中的查询字符串,我需要将其发送回Strapi以便从中获取令牌。该令牌旨在授予对CMS的访问权限。目的是将Strapi用作Microsoft的SSO提供程序,以便立即访问MSAL和Strapi。
我从Strapi获得的访问令牌是有效的,但是问题是,一旦初始化Angular应用程序,URL中的查询字符串就会丢失(仅显示一秒钟,但可以在“网络”选项卡中进行验证)。因此,通常在可以在构造函数中捕获查询字符串的位置,我无法捕获它,因为在调用构造函数之前查询字符串已消失。
我不确定如何保存该值,以便可以将其发送到需要的地方。
下面是我尝试过的两个示例,这些示例由于上述原因而无法正常工作。
constructor(
public mediaObserver: MediaObserver,private router: Router,private authService: MsalService,private broadcastService: BroadcastService,private apibundleService: ApibundleService,private permissionsService: NgxPermissionsService,private http: HttpClient,private route: ActivatedRoute
) {
this.route.queryParams.subscribe((params) => {
this.queryAccessToken = params['access_token'];
console.log(this.queryAccessToken);
});
}
constructor(
public mediaObserver: MediaObserver,private route: ActivatedRoute
) {
this.route.fragment
.pipe(map(fragment => fragment))
.subscribe(fragment => {
let f = fragment.match(/^(.*?)&/);
if(f) {
let token: string = f[1].replace('access_token=','');
}
})
}
解决方法
在这里创建了一个问题。 https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/3242
1.4.2 已经解决了。请更新库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。