我有一个 Angular 前端,它使用受具有 OIDC 身份验证的 AWS ALB 保护的后端 API。如果请求没有有效的 Jwt 令牌,ALB 将重定向到 Okta。
但是在云上部署后,前端到达 ALB 并获得 302 响应,其中 Location 标头指向我的 Okta OIDC 提供商,但前端不会重定向用户。
如何在后端收到 302 响应时让前端重定向用户,并在身份验证成功后让 OIDC 重定向回前端?
Angular 提供了
HttpClientInterceptor
,它允许您拦截 HTTP 请求和响应。因此,创建一个拦截器来检查状态代码 (302) 以及响应中是否存在 Location
标头。如果满足这两个条件,请从 Location
标头中提取 URL 并使用 Angular 路由器将用户导航到该 URL,或者只需执行以下操作:
window.location.href = event.headers.get('Location');