我使用msal.js对用户进行身份验证。我正在成功获取令牌。在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 { }我的问题是,当用户登录时,我确实得到了令牌,并且当redirecturi达到‘/list’时。我有个守卫。在防护内部,由于页面没有重定向,所以没有设置令牌值。这就是为什么它总是给出假的原因,我被重定向回登录页面。
发布于 2019-07-06 12:38:24
这可能与散列片段有关。
虽然不是Angular 4,但在我的例子中(旧的Angular JS -1.6app),我不得不更改$locationProvider并将哈希设置为空字符串,因为#片段干扰了Azure B2C AD返回的#id_token。
如果使用Angular JS,请确保使用的是msal-angularjs包。
https://www.npmjs.com/package/@azure/msal-angularjs
这里有个注解:
注意:如果未配置HTML5模式,请确保将$locationProvider hashPrefix设置为空字符串
app.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(false).hashPrefix('');
}]);如果不进行上述设置,AAD登录将无限期循环,因为AAD的回调URL (格式为{yourBaseUrl}/#{AADTokenAndState})将被重写,以删除导致令牌解析失败和登录序列再次发生的'#‘。
发布于 2019-02-14 02:02:45
推荐在GitHub上使用angular MSAL库示例实现:
npm install @azure/msal-angular --savehttps://stackoverflow.com/questions/46644118
复制相似问题