Boz*_*ski 6 angular-http-interceptors angular msal-angular
我正在尝试调用本地主机 API 并在标头上附加不记名令牌。它应该由 msal-angular 自动完成。现在,我已将 localhost API 路由添加到 protectedResourceMap,但标头中没有不记名令牌。尝试添加 jsonplaceholder 和 graph.microsoft 以对其进行 HTTP post 调用,并且可以正常工作。唯一的问题是当我尝试对 localhost API 进行 HTTP 调用时。
我正在使用:
@azure/msal-browser@2.12.0
@azure/msal-angular@2.0.0-beta.0
Run Code Online (Sandbox Code Playgroud)
我在 app.module.ts 中使用了工厂提供程序作为拦截器。
export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
const protectedResourceMap = new Map<string, Array<string>>();
protectedResourceMap.set('https://graph.microsoft.com/v1.0/me', [
'user.read',
]);
protectedResourceMap.set('http://localhost:5000/api/add', [
'api://custom api consent'
]);
protectedResourceMap.set('https://jsonplaceholder.typicode.com/', [
'api://custom api consent'
]);
return {
interactionType: InteractionType.Redirect,
protectedResourceMap,
};
}
Run Code Online (Sandbox Code Playgroud)
它也在 app.module.ts 中注册
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: MsalInterceptor,
multi: true,
},
{
provide: MSAL_INSTANCE,
useFactory: MSALInstanceFactory,
},
{
provide: MSAL_GUARD_CONFIG,
useFactory: MSALGuardConfigFactory,
},
{
provide: MSAL_INTERCEPTOR_CONFIG,
useFactory: MSALInterceptorConfigFactory,
},
MsalService,
MsalGuard,
Msal,
BroadcastService,
],
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
Boz*_*ski 19
如果您遇到类似问题,我找到了一个可能有帮助的解决方案。事实证明,更动态地使用protectedResourceMap函数并提供相对 URL 效果更好。该问题是由于使用完整路由导致的,包括域名和端口号,例如“http://localhost:4200/api/add”。解决方案很简单,将“/api/”添加到 protectedResourceMap 中,如下所示:
protectedResourceMap.set('/api/', [
'api://custom api consent'
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |