Day 9:用户认证与 JWT 实战

Day 9:用户认证与 JWT 实战 在上一章中,我们用 Gin/Fiber 写了一个最基本的用户注册和登录接口。但当用户登录之后,我们需要在随后的 API 请求中知道 “这个用户是谁”,并验证用户是否有权限访问某些资源。这就是 用户认证 的核心。 本章我们将学习如何在 Go Web 服务中实现 JWT (JSON Web Token) 用户认证机制,并在任务管理系统中加上 登录态 和 鉴权。 1. 用户认证的常见方式 常见的 Web 服务认证方式有: Session + Cookie:后端保存 session,前端通过 cookie 传递 session ID(状态化,依赖存储)。 Token(推荐):服务端生成 token,客户端每次请求时带上 token(无状态,适合微服务与移动端)。 JWT(JSON Web Token):一种特别的 Token 格式,包含了用户信息和签名,无需存储。 我们选择 JWT,因为它: 无需服务端保存登录状态,适合微服务。 可以携带用户 ID、角色等信息。 有过期时间,安全可控。 2. JWT 结构解析 一个 […] →Read more

Day 8: Go Web 框架快速上手

Day 8:Go Web 框架快速上手 1. 背景与目标 在前几天的学习中,我们已经掌握了 Go 的基础语法、并发模型和一些工具链。今天我们要把 Go 作为 Web 后端语言 来使用。 本章目标: 理解 标准库 net/http 的特点与不足 熟悉 主流 Web 框架 Gin/Fiber 的用法 通过 实现用户注册与登录接口 来实战演练 2. 标准库 net/http Go 内置的 net/http 非常简洁,它内置了 HTTP Server 和 Client,代码风格偏低级,但很灵活。 示例:Hello World package main import ( "fmt" "net/http" ) func helloHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, […] →Read more

day 1: 环境准备与第一个 Go 程序

第一天:环境准备与第一个 Go 程序 学习目标 搭建 Go 开发环境 熟悉 go mod、go run、go build 编写并运行第一个 Go 程序 通过 LeetCode 简单题体验 Go 语言语法 思考与服务开发的关联 1. 环境搭建 安装 Go 访问 Go 官方下载页面。 选择对应平台的安装包 (Windows、macOS、Linux)。 安装完成后,验证版本: go version 输出类似: go version go1.22.2 darwin/amd64 配置工作区 推荐使用 Go Modules(Go 1.13+ 默认支持)。 检查是否启用: go env GOMOD 如果输出为空,可以在项目目录执行: go mod init myservice IDE 选择 […] →Read more

21天以实例精通Go服务开发

第一部分:基础篇(Day 1 – Day 7)—— 打牢Go编程与服务开发根基 Day 1:Go 开发环境与工具链 Go Modules、依赖管理 常用 IDE(VSCode、GoLand)与调试技巧 使用 go test 进行单元测试 Day 2:数据结构与 map 底层 LeetCode 示例:两数之和(HashMap 应用) Go 中 map 的键比较规则,底层实现 最佳实践:map 并发访问与 sync.Map Day 3:切片与内存模型 LeetCode 示例:三数之和 / 滑动窗口 切片扩容机制、内存逃逸 实战:写一个安全的分页查询函数 Day 4:并发基础 goroutine 与调度原理 LeetCode 示例:生产者-消费者模型(多线程版) 实战:用 channel 实现工作池 Day 5:错误处理与上下文 Go 错误处理哲学 context.Context 的用法(超时、取消、请求范围数据) 实战:写一个带超时的 […] →Read more

讯飞开放平台API

https://www.xfyun.cn/doc/asr/voicedictation/API.html#%E6%8E%A5%E5%8F%A3%E8%B0%83%E7%94%A8%E6%B5%81%E7%A8%8B //@hosturl : like wss://iat-api.xfyun.cn/v2/iat //@apikey : apiKey //@apiSecret : apiSecret func assembleAuthUrl(hosturl string, apiKey, apiSecret string) string { ul, err := url.Parse(hosturl) if err != nil { fmt.Println(err) } //签名时间 date := time.Now().UTC().Format(time.RFC1123) //参与签名的字段 host ,date, request-line signString := []string{"host: " + ul.Host, "date: " + date, "GET " + ul.Path + " HTTP/1.1"} […] →Read more

Web Security – Ceritificate

1. Concepts 1) 密钥对(私钥 & 公钥) What 私钥:只属于持有者的秘密数据;用于签名或解密。 公钥:可公开分发;用于验签或加密。 常见算法:RSA(2048/3072/4096)、ECDSA(P-256/384/521)、Ed25519(签名友好、体积小)。 Why 将“机密性”和“身份/完整性”分离:公开分发公钥不会泄密;只有私钥才能产生可信签名。 支持大规模、跨组织的互联网信任模型(PKI)。 When TLS/HTTPS、mTLS、JWT 签名、软件发布签名(如容器镜像/包)、SSH 登录等。 Who 服务器/服务实例、反向代理、客户端(mTLS)、CI/CD 签名者、KMS/HSM 托管方、开发者/运维。 How(要点 & 实践) 生成与存放:优先 KMS/HSM 或文件系统 + 严格权限;避免将私钥写入镜像与代码库。 算法选择: 兼容性优先:RSA-2048; 性能与体积:ECDSA P-256; 现代签名:Ed25519(但看 TLS/库兼容性)。 备份与轮换:定期轮换(如 6–12 个月),并保留旧私钥用于历史数据验签。 2) 数字签名(Digital Signature) What 用私钥对“数据的哈希”做签名(即用私钥对这个摘要进行加密),任何人用公钥可验证“是谁签的、有没有被改”。 Why 证明 身份(只有私钥持有者能签)、保证 完整性(数据改了就验不过)。 When CA 签发证书;TLS 握手;JWT/消息/工件(artifact)签名;代码签名。 Who 签名者:持私钥方(服务器、CA、CI/CD)。 验签者:浏览器、服务端、消费者。 How(流程) […] →Read more

值得收藏的英文医学网站

以下是一些值得收藏的英文医学网站,这些网站提供可靠、权威的医学信息,涵盖健康、疾病、药物、研究和临床实践等多个领域。它们适合医学生、医疗专业人士及对健康信息感兴趣的公众使用。这些网站经过严格筛选,确保信息来源可信且内容经过专业审查。 值得收藏的英文医学网站 MedlinePlus (medlineplus.gov) 特点: 由美国国家医学图书馆(National Library of Medicine)提供,涵盖4000多种疾病、症状、测试、手术等信息,配有图片和插图。内容通俗易懂,支持英语和西班牙语,部分内容有其他语言版本。 适合人群: 患者、公众、医学生。 推荐理由: 信息权威,更新及时,无需注册即可免费访问。 Mayo Clinic (mayoclinic.org) 特点: 由美国顶级医疗机构梅奥诊所运营,提供疾病、症状、药物、测试、健康生活方式等全面信息。网站包括症状检查器和最新的医学研究动态。 适合人群: 公众、患者、医务工作者。 推荐理由: 以研究为后盾,内容深入但易于理解,适合寻求可靠健康信息的用户。 WebMD (webmd.com) 特点: 提供从常见症状到严重疾病的全面健康信息,包括药物数据库、症状检查器和医生讨论平台。内容覆盖腹部到生殖健康等多个领域。 适合人群: 公众、患者、医疗专业人士。 推荐理由: 信息量大,界面友好,适合快速查找症状和药物信息。 PubMed (pubmed.ncbi.nlm.nih.gov) 特点: 由美国国家医学图书馆运营,提供数百万篇同行评审的医学文献、临床试验和案例研究。支持MeSH(医学主题词)检索,适合深入学术研究。 适合人群: 医生、研究人员、医学生。 推荐理由: 医学研究的首选数据库,内容权威且免费。 UpToDate (uptodate.com) 特点: 提供基于证据的临床决策支持,覆盖25个专科、11000多个主题,由6500多位全球知名医生编写和审查。内容包括治疗指南和药物信息。 适合人群: 医生、临床工作者(需订阅)。 推荐理由: 被广泛用于临床决策,研究显示其使用可缩短住院时间并降低并发症。 National Institutes of Health (nih.gov) 特点: 美国最大的生物医学研究机构,提供疾病信息、健康服务定位器、临床试验和健康教育资源。包括CDC和NIH的最新健康动态。 适合人群: 公众、研究人员、医生。 […] →Read more

程序员爸爸写给女儿的第五封信-构建自己的知识库

There is no excerpt because this is a protected post.

程序员爸爸写给女儿的第六封信-时间管理

There is no excerpt because this is a protected post.

程序员爸爸写给女儿的第七封信-如何与人相处

There is no excerpt because this is a protected post.