因此,我的 Angular 项目中的 MSAL-ANGULAR 部件可以正常工作。问题出在我将会话打开一段时间并且 MSAL 在令牌可能过期时向 Azure AD 调用重新身份验证请求时。这会自动重定向到 Azure AD 进行验证,如果启动路径不是 Azure 中的注册路径,则会失败(例如 localhost:1000/登录会成功,但 localhost:1000/订单不会)。
理想情况下,我不必在 Azure AD 中指定每个路径排列,因此我认为我会拦截身份验证重定向,重定向到默认 URL,然后启动身份验证过程。这是我最初的想法:
我认为身份验证层中的以下代码将为此设置一个钩子,即
import { MsalService, BroadcastService } from '@azure/msal-angular';
broadcast.subscribe("msal:loginSuccess",
() => {
...
}
this.broadcast.subscribe("msal:loginFailure",
() => {
...
});
但它看起来并没有击中那一块,而是挂钩在 app.routing 中:
import { MsalGuard } from "@azure/msal-angular";
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent, canActivate: [MsalGuard] },
{ path: 'orders', component: OrdersComponent, canActivate: [MsalGuard] },
];
任何想法将不胜感激。