我一直在尝试从Angular中的MSAL获取访问令牌,但似乎陷入了困境,希望有人能澄清这样做的正确过程。
我目前正在使用以下内容来尝试获取令牌。
this.msal.acquireTokenSilent({ scopes }).then((response) => {
console.log(response.accessToken);
});
}, (error) => {
if (error instanceof ClientAuthError) {
this.msal.loginRedirect({ scopes });
}
if (error instanceof InteractionRequiredAuthError) {
this.msal.acquireTokenRedirect({ scopes });
}
if (error instanceof HttpErrorResponse && error.status === 401) {
this.msal.acquireTokenRedirect({ scopes });
}
});如果你登录了Azure,这是可行的,但是如果你没有登录,那么它会进入ClientAuthError,并将你重定向到登录。登录后,您将重定向到原始页面,并需要再次单击相同的登录按钮。
有没有一种方法可以在登录时获得访问令牌,而不是在登录后调用acquireTokenSilent?
发布于 2020-06-23 07:23:09
在msal中,默认情况下,如果你调用acquiretokenredirect,它会执行第二次重定向。这将使您在第二次重定向时丢失“令牌”。您可以通过在身份验证配置中将"navigateToLoginRequestUrl“设置为false来防止它进行第二次重定向。然后,您应该能够获得令牌并使用它。
https://stackoverflow.com/questions/62521150
复制相似问题