category

golang

共 465 篇文章。
全部文章gamegolang客户端开发MinigameSaasrustPythonJavacgTypescriptengineCocosMmodatabase
golang

《Go 语言编程实战》5.3 OAuth2/OIDC 与第三方登录

企业客户会问「能不能用我们自己的 SSO」,这时要接的不是用户名密码而是 OAuth2 授权码加 OIDC。本节在本机起真实身份提供方,把 discovery、PKCE、换 token、JWKS 验 ID token 跑通,实测 PKCE 不匹配与 state 不一致的拦截,记录 x/oauth2 靠 Content-Type 判断格式的踩坑,并给出外部身份与本地账号的绑定规则。

8 分钟阅读
Go Go 语言编程实战 OAuth2
golang

《Go 语言编程实战》5.2 RBAC 与多租户隔离

令牌解决了「你是谁」,但 viewer 和 owner 能做的事完全不同,而且不同租户的数据绝不能互相看见。本节给 TaskHub 建 owner/admin/member/viewer 四级角色与权限矩阵,把认证、租户与权限校验串成中间件链,再用一个真实的反面仓库演示「忘了带 tenant_id」如何导致跨租户泄漏,给出参数、类型与行级安全三种隔离实现,并用表驱动测试锁住权限边界。

7 分钟阅读
Go Go 语言编程实战 RBAC
golang

《Go 语言编程实战》5.1 JWT 与会话管理

上一章的接口任何人都能调用,本节给 TaskHub 装上认证。先用 jwt/v5 讲清 JWT 的三段结构与 claims 设计,把「锁死算法、校验 iss/aud/exp」五个必做项落成代码,实测篡改 payload、alg=none、过期、错签发者与算法混淆五种攻击的拦截结果,再用真实 Redis 做会话撤销与刷新令牌轮换,并对比本地校验与远程吊销检查近千倍的成本差。

7 分钟阅读
Go Go 语言编程实战 JWT
golang

《Go 语言编程实战》4.3 OpenAPI 契约优先与版本化

接口写完了,但契约只活在代码里:客户端没有类型、文档会过期、字段改名没人知道。本节给 TaskHub 补上 OpenAPI 契约优先的流程,用 oapi-codegen 从一份 openapi.yaml 真实生成类型与服务端骨架并跑通请求,实测生成器对 enum 与多余字段的校验边界,再写一个契约漂移检查把 spec 和路由锁在一起,最后给出 URL 版本化与废弃策略。

8 分钟阅读
Go Go 语言编程实战 OpenAPI
golang

《Go 语言编程实战》4.2 分页、过滤、排序与幂等

列表接口是接口设计里最容易被低估的一个。本节把 TaskHub 的任务列表做成可游标翻页、可白名单过滤、可白名单排序的接口,用真实 Postgres 对比 OFFSET 与键集分页在 20 万行下的耗时与扫描行数差距,再用幂等键中间件解决 POST 重试导致重复创建的问题,并给出重放与冲突的实测行为。

8 分钟阅读
Go Go 语言编程实战 分页
golang

《Go 语言编程实战》4.1 REST 资源建模与状态码

接口一多,最先失控的不是代码而是 URL 和状态码。本节把 TaskHub 的租户/项目/任务三级资源建模成稳定的 URL 层级,梳理每个方法与状态码的对应关系,用 Go 1.22+ ServeMux 的路径参数承接,并解决多租户下 404 与 403 的取舍、ID 前缀与时间格式等表示层约定,最后用 httptest 把状态码固化成可回归的契约。

8 分钟阅读
Go Go 语言编程实战 REST