我正在使用msal.js来验证用户身份。我成功获得了令牌。在azure portal的redirectURl中,我已将路径指定为" http://localhost:44340"。
我的app.routing模块如下所示:
const routes: Routes = [
{ path: 'authentication', component: LoginComponent },
{ path: '', redirectTo: '/lists', pathMatch: 'full' , canActivate: [AuthenticationGuard] },
{ path: 'lists', component: ApplicationContainer , canActivate: [AuthenticationGuard]}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
我的问题是,当用户登录时,我确实获得了令牌,并且当redirecturi到达' / lists'时。我有一个gaurd。在gaurd的一侧,由于页面未重定向,因此尚未设置标记值。这就是为什么它一直都是假的,我被重定向回登录页面。
答案 0 :(得分:0)
推荐使用GitHub上的angular MSAL库示例实现:
npm install @azure/msal-angular --save
答案 1 :(得分:0)
这可能与哈希片段有关。
尽管不是Angular 4,但在我的情况下(旧的Angular JS-1.6应用程序),我不得不更改$locationProvider
并将哈希值设置为空字符串,因为#
片段正在干扰{ {1}}由Azure B2C AD返回。
如果使用Angular JS,请确保您使用的是#id_token
软件包。
https://www.npmjs.com/package/@azure/msal-angularjs
那里有一个注释:
注意:如果未配置HTML5模式,请确保将$ locationProvider hashPrefix设置为空字符串
msal-angularjs
在没有上述设置的情况下,AAD登录将无限期循环,因为来自AAD的回调URL(以{yourBaseUrl} /#{AADTokenAndState}的形式)将被重写以删除“#”,从而导致令牌解析失败并登录顺序再次发生。