我正在使用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/