Browse Source

feat: README.md

BaiLuoYan 1 tuần trước cách đây
mục cha
commit
9d89797587
1 tập tin đã thay đổi với 14 bổ sung1 xóa
  1. 14 1
      README.md

+ 14 - 1
README.md

@@ -1717,6 +1717,17 @@ gRPC 接口主要面向**产品后端服务间调用**,相比 HTTP 接口具
 - **权限缓存刷新**:产品后端自行维护权限缓存,定期通过此接口刷新,确保与权限系统保持一致
 - **管理后台权限预览**:管理员查看某用户在某产品下的实时权限,用于排查和审计
 
+### Logout — 用户登出
+
+使 accessToken 对应用户的所有已签发令牌立即失效(递增 `tokenVersion`)。
+
+**调用场景:**
+
+- **产品后端代理登出**:产品后端收到用户登出请求后,通过 gRPC 调用权限系统使令牌失效,与 gRPC Login 配对使用,保持协议一致性
+- **强制下线**:管理员需要强制某用户下线时,由产品后端持有该用户的 accessToken 并调用此接口
+
+**安全约束:** `accessToken` 必须是有效的 access 类型令牌;`tokenVersion` 递增后,该用户所有已签发的 accessToken 和 refreshToken 均立即失效;接口幂等,重复调用不报错。
+
 ### Go SDK 使用示例
 
 ```go
@@ -1726,8 +1737,10 @@ client, err := permclient.NewPermClient("perm-system:10002")
 
 resp, err := client.SyncPermissions(ctx, &pb.SyncPermissionsReq{...})
 resp, err := client.Login(ctx, &pb.LoginReq{...})
+resp, err := client.RefreshToken(ctx, &pb.RefreshTokenReq{...})
 resp, err := client.VerifyToken(ctx, &pb.VerifyTokenReq{AccessToken: token})
 resp, err := client.GetUserPerms(ctx, &pb.GetUserPermsReq{...})
+err = client.Logout(ctx, accessToken)
 ```
 
 ---
@@ -1876,7 +1889,7 @@ server {
 测试覆盖范围:
 
 - **REST API 测试** — 全部 HTTP 接口的正常路径、参数边界、错误路径
-- **gRPC 接口测试** — 全部 5 个 RPC 方法的正常/异常场景
+- **gRPC 接口测试** — 全部 6 个 RPC 方法的正常/异常场景
 - **中间件测试** — JWT 鉴权、冻结账号拦截、UserDetails 注入、统一响应
 - **访问控制测试** — access.go 全部函数的正面/负面测试
 - **UserDetailsLoader 测试** — 缓存命中/miss、Clean/Del/BatchDel/CleanByProduct、权限计算