feat: 新增 snowid(雪花ID+GORM钩子模板,吸收go-hua); wsc新增SessionClient会话层(吸收两端internal/cloud); jwtx重写为标准三段式HS256+密钥显式传参

This commit is contained in:
w11
2026-09-19 21:12:44 +08:00
parent 9ef71f51d4
commit 83679e2080
8 changed files with 452 additions and 42 deletions
+8 -12
View File
@@ -1,23 +1,19 @@
# jwtx
轻量 HMAC-SHA256 令牌(JWT 风格,无第三方依赖),用于登录态/服务间鉴权。
轻量 HS256 JWT(标准库实现,零外部依赖)。密钥显式传参,不落全局状态。
## 用法
```go
import "git.zeroonesoft.cn/golib/zogo/jwtx"
token, err := jwtx.Sign(uid, 3600) // 签发,TTL 秒
claims, err := jwtx.Parse(token) // 校验签名+过期,返回 *Claims{Uid, Exp, Msg}
token, err := jwtx.Sign(secret, jwtx.Claims{UserID: 42, Role: "admin", Exp: time.Now().Add(time.Hour).Unix()})
claims, err := jwtx.Parse(secret, token) // 签名错→ErrInvalidToken,过期→ErrExpired
```
## 格式
## 说明
`base64url(payload).base64url(hmac-sha256(payload))`,两段式(无 header 段),payload 为
`Claims` JSON。
## 注意
- **签名密钥当前硬编码在包内**(`zo-maintain-jwt-secret-2026`)。仅适用于内网/测试场景;
用于生产鉴权前应改为注入式(加 `SetSecret` 或从环境读取)。
- 过期校验在 `Parse` 内完成(`Exp` 与当前时间比较)。
- 标准三段式 `header.payload.signature`(HS256),`Claims{UserID, Role, Exp}` 为登录令牌
通用三字段;需要更多业务字段时建议换成 `github.com/golang-jwt/jwt`,本包定位是
零依赖场景的最小实现。
- **密钥必须从配置/环境注入**,不要硬编码。