Skip to content

认证请求 ​

createAuthenticatedHttpClient 在独立 Axios 实例上组合动态凭据和可信目录检查。它不依赖 Vue 或微前端,也不实现登录、Token 存储、自动续期和页面提示。

独立应用使用 ​

ts
import { resolveHttpConfig } from '@axewo/fin-core/config'
import { createAuthenticatedHttpClient } from '@axewo/fin-core/http/authenticated'

export function createApi(readToken: (signal: AbortSignal) => Promise<string | null>) {
  const config = resolveHttpConfig({ apiBase: '/api/' })
  const client = createAuthenticatedHttpClient({
    baseURL: config.apiBase,
    trustedApiBase: config.trustedApiBase,
    timeout: config.timeout,
    withCredentials: config.withCredentials,
  })
  const release = client.installRequestTokenProvider(readToken)
  return {
    http: client.http,
    dispose() { release(); client.dispose() },
  }
}

在应用初始化或挂载时创建一次,卸载时调用 dispose。readToken 由应用实现,来自独立会话或宿主适配器;每次请求读取最新值。返回字符串注入 Bearer Token;null 只表示已认证但使用 Cookie 等不暴露 Token 的模式,不能把未登录视为 null。

Provider 读取失败会拒绝请求,不降级匿名重发。不要在业务 URL、公开会话、日志或事件总线中传播凭据。

可信目录 ​

trustedApiBase 必须与 Axios 的 baseURL 对应,使用以 / 结尾的目录。跨源必须 HTTPS;SSR 无浏览器来源时必须提供绝对 HTTPS API。

只有该目录范围内的相对请求路径才自动读取和注入凭据。绝对 URL、协议相对地址、被覆盖的 baseURL、反斜线、路径越界等不会自动注入。外部请求需要由应用显式设计自己的认证策略。

401 与宿主会话 ​

installRequestTokenProvider(provider, trustedApiBase?, begin?) 的第三个参数可在请求发送前捕获本轮身份票据,并返回本次请求的 401 失效回调。

fin-micro 应使用内置的会话和认证请求适配器,不需要重新实现票据逻辑。宿主票据可以保证退出、重新登录或用户切换后,旧请求的 401 不会撤销新身份。完整接入见认证与公共基础设施。

返回能力用途
httpAxiosHttpClient,返回值与 Axios 请求文档一致
installRequestTokenProvider(...)安装动态来源,返回幂等释放函数,可恢复尚有效的前一个来源
dispose()释放所有来源并取消等待中的凭据读取;释放后禁止复用客户端

Provider 接收 AbortSignal,应尽量响应取消;工厂也会阻止已卸载来源的晚到结果继续发送。已经发出的网络请求由调用方的请求 signal 管理。失败回调自身出错通过工厂的 onError 通知,不覆盖原始请求异常。