Skip to content
omeyang edited this page Sep 17, 2026 · 1 revision

pkg/business/xauth

稳定性:Stable · 覆盖率:95.0% · 源码:pkg/business/xauth

认证服务客户端。封装 Token / 平台信息查询 + 双层缓存(Memory + Redis)。

用途

  • 业务后端校验客户 Token
  • 获取用户/租户/平台信息
  • 高频查询场景下避免重复打 auth 服务

快速上手

import "github.com/omeyang/xkit/pkg/business/xauth"

c, _ := xauth.New(xauth.Config{
    BaseURL: "https://auth.internal/v1",
    Cache: xauth.CacheConfig{
        MemoryTTL: 30*time.Second,
        RedisTTL:  5*time.Minute,
        RedisClient: redisClient,
    },
})

info, err := c.ValidateToken(ctx, token)
if err != nil { /* 失败或过期 */ }

关键类型与函数

名称 说明
Client / New(cfg) 入口
Config / CacheConfig 配置
ValidateToken(ctx, token) (Info, error) 校验 + 拉信息
HTTPClient.Do / request nil ctx 返 ErrNilContext(原 panic,FG-H fix)

设计要点

  • 路径与配置分离:Path* 常量与 DefaultPaths() 只是开源版本的示例路由;实际部署通过 Config.Paths 覆盖认证服务的真实路径,代码库中不保留任何环境专属的值。未设置的字段自动回填示例值,已设置的值必须以 / 开头(否则 Validate 返回 ErrInvalidPath)。

    cfg := &xauth.Config{
        Host: "https://auth.example.com",
        Paths: xauth.Paths{
            TokenObtain: "/your/oauth/token",
            TokenVerify: "/your/oauth/token/verify",
        },
    }
  • 双层缓存:Memory(xlru)→ Redis(xcache)→ auth 服务

  • Request() 浅拷贝 AuthRequest 避免修改调用方 Body(FG-M fix)

  • nil ctx 防御:HTTPClient.Do/request 入口(FG-H fix)

相关

Clone this wiki locally