微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular Web Component http 调用不通过客户端 http 拦截器

如何解决Angular Web Component http 调用不通过客户端 http 拦截器

设置:

我在 Angular 10 应用程序中使用了一个 Web 组件 (Angular 10)。 Web 组件对 Web API 进行 Httpclient 调用获取一些数据以填充菜单下拉列表。 Web 组件是使用标准方法制作的,使用 Angular 10 制作 Web 组件。

Web 组件通过主客户端应用程序中的脚本加载。这是来自父应用程序的 angular.json 文件

1."scripts":
 [
    "projects/web-component-test/src/assets/plugin.bundle.js"
 ]

并且一切正常,除了我们收到 401 错误(未经授权),因为端点要求用户登录。通过正常工作,还有其他控件根据需要仅显示下拉列表,它获取数据来自 API 调用的未填充。

流程:

  1. 用户访问网站,然后系统会提示登录(使用 keycloak 身份验证)。
  2. 应用程序加载正常,但 Web 组件尝试加载菜单项时出现 401 错误

来自父应用程序的 Http 调用工作正常; jwt 令牌被添加调用受保护 API 的标头中。来自子 Web 组件的调用在标头中没有 jwt 标记,因此失败并显示 401 错误

httpinterceptor:我们在 主客户端 应用程序(Web 控件的父级)上有一个 httpinterceptor。从主应用发出的 Http 调用通过拦截器进行路由,如果需要,令牌会附加到头中。

从子 Web 组件发出的调用不要命中父应用程序中的拦截器吗?

问题: 如何通过父级中的 http 拦截器从子 Web 组件路由进行调用,以便添加令牌。

我尝试过的事情: 如果我这样做,我可以让 Web 组件正常工作:

  1. 当父加载时,我将令牌存储在本地存储中
  2. 在 Web 组件上使用 http 拦截器,从本地存储中检索令牌并使用它。

** 有效,但我不想在本地存储中存储安全令牌。

当父组件加载子组件时,在子组件的属性中传递令牌

** 再次,我可以让它工作,但不是很安全。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。