我们将从Auth0迁移到MSAL,之前我们在APP_INITIALIZER中进行了身份验证,然后在那之后添加了其他异步调用.
return (): Promise<void> => {
return new Promise((resolve) => {
authService
.processAuthenticationData()
.then((res) => {
// actions$.pipe(ofType(loadPermisions) and so on
我想在MSAL保持这种行为,但我正在努力做到这一点.
有没有人有过这种方法的经验,或者有任何如何实现它的提示或建议?谢谢
if (!msalService.instance.getActiveAccount()) {
console.log("no logged in");
msalService.loginRedirect();
}
return () =>
msalService.handleRedirectObservable().pipe(
takeWhile((response) => !!response),
tap((response) => {
console.log("logged", response);
if (response) {
msalService.instance.setActiveAccount(response.account);
}
}),
);
这不起作用,因为‘实例’必须激活用户,所以它保持重定向,而且我不确定重定向是否会导致APP_INITIALIZED取消,然后在重定向回来后重新开始?
return () =>
msalService.loginRedirect().pipe(
tap(() => console.log('after login redirect')),
concatMap(() =>
msalService.handleRedirectObservable().pipe(
tap((response) => {
console.log("login reaction ", response);
msalService.instance.setActiveAccount(response.account);
}),
),
),
);
这可能不起作用,因为handleReDirectObservable没有订阅它从登录重定向返回的重定向时间?
此外,还有msalBroadCastService,但我不确定是不是正确的方式.