写点什么

《使用 Gin 框架构建分布式应用》阅读笔记:p127-p142

作者:codists
  • 2024-10-23
    广东
  • 本文字数:1180 字

    阅读完需:约 4 分钟

《用 Gin 框架构建分布式应用》学习第 9 天,p127-p142 总结,总计 16 页。

一、技术总结

1.Authentication 方式汇总

(1)API keys

API keys 认证方式示例:


func (handler *RecipesHandler) NewRecipeHandler(c *gin.Context) {  // API-keys 认证  value := os.Getenv("X-API-KEY")  log.Println("X-API-KEY in env: ", value)  if value == "" {    value = "codists"  }
log.Println("X-API-KEY in header:", c.GetHeader("X-API-KEY")) if c.GetHeader("X-API-KEY") != value { c.JSON(http.StatusUnauthorized, gin.H{"message": "Unauthorized"}) return } // 请求参数反序列化 var recipe models.Recipe if err := c.ShouldBindJSON(&recipe); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) } insertionResult, err := handler.collection.InsertOne(handler.ctx, &models.Recipe{}) if err != nil { // 新增失败,返回错误给前端 c.JSON(http.StatusInternalServerError, gin.H{"message": "新增失败" + err.Error()}) return }
log.Println("Remove recipes from Redis") handler.redisClient.Del(handler.ctx, "recipes") // 新增成功,返回 ID c.JSON(http.StatusOK, insertionResult.InsertedID)}
复制代码


这种方式在本人实际的工作经历中还没有遇到,不过在其它网站中有看到过实际应用。

(2)Basic Auth

(3)Client session

(4)OpenID Connect

(5)OpenAutherization(OAuth) 2.0

2.JWT

关于 JWT 的介绍可参考 RFC7519:https://datatracker.ietf.org/doc/html/rfc7519。书中作者使用的是 jwt-go 这个包,现在这个包已经 archived 了,大家转而使用 golang-jwt。

3.Gin 知识点

(1)router.Group()

二、英语总结

1.pick up

p133,API keys are simple; however, anyone who makes a request to an API transmits their key,and in theory, the key can be picked up easily with a man-in-the-middle (MITM) attack


when no encryption is in use.


vt. to get sth。pick up 这个词用法很灵活,感觉在很多场景能使用。

2.depict

p134, A JWT token consists of three parts separated by dots, as depicted in the following


screenshot...


(1)depict: de-("down") + pingere("to paint")。vt. to represent or show sth in a picture(描绘).

三、其它

虽然在使用 Python、Flask 的时候使用过 JWT,但是本章阅读起来速度还是比较慢,本质在于对 Go 语言不熟悉,以及 Go 开发中使用的框架不熟悉。

四、参考资料

1. 编程

(1) Mohamed Labouardy,《Building Distributed Applications in Gin》:https://book.douban.com/subject/35610349

2. 英语

(1) Etymology Dictionary:https://www.etymonline.com


(2) Cambridge Dictionary:https://dictionary.cambridge.org


欢迎搜索及关注:编程人(a_codists)

发布于: 刚刚阅读数: 4
用户头像

codists

关注

公众号:编程人 2021-01-14 加入

Life is short, You need Python

评论

发布
暂无评论
《使用Gin框架构建分布式应用》阅读笔记:p127-p142_golang_codists_InfoQ写作社区