我正在使用msal.js来验证用户身份。我成功获取 token 。在azure门户的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 { }

我的问题是,当用户登录时,我确实获得了 token ,而当redirecturi到达“/列表”时。我有个 guard 。在防护罩内,尚未设置 token 值,因为页面尚未重定向。这就是为什么它始终显示false的原因,并且我被重定向回登录页面。

最佳答案

这可能与哈希片段有关。

尽管不是Angular 4,但在我的情况下(旧的Angular JS-1.6应用程序),我不得不更改$locationProvider并将哈希值设置为空字符串,因为#片段干扰了Azure B2C AD返回的#id_token

如果使用Angular JS,请确保您使用的是msal-angularjs包。

https://www.npmjs.com/package/@azure/msal-angularjs

那里有一条纸条:


app.config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5Mode(false).hashPrefix('');
}]);

关于angular - msal和angular 4重定向网址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46644118/

10-09 23:43