-
Notifications
You must be signed in to change notification settings - Fork 0
xauth
omeyang edited this page Sep 17, 2026
·
1 revision
稳定性: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)
- 包:xcache / xlru
- 概念:Nil context 防御
- API:api.md#pkgbusinessxauth