目录
文章目录
- 1 介绍
- 2 练习
- 友情援助
1 介绍
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点
对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错
借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范.
2 练习
本次练习主要对上一次的代码继续进行改善,
增加了一个鉴权中间件,用户可以通过注册时获得的TOKEN,
直接访问后续服务,本次任务首先,增加一个鉴权中间件环节。
具体实现代码如下,
AuthMidddleware.go
package middlewareimport ( "GINVUE/Model" "GINVUE/common" "net/http" "strings" "github.com/gin-gonic/gin")func AuthMiddleware() gin.HandlerFunc { return func(ctx *gin.Context) { //获取authorization header tokenString := ctx.GetHeader("Authorization") //validate token formate if tokenString == "" || !strings.HasPrefix(tokenString, "Bearer ") { ctx.JSON(http.StatusUnauthorized, gin.H{"code": 401, "msg": "权限不足"}) ctx.Abort() return } // tokenString = tokenString[7:] // token, claims, err := common.ParseToken(tokenString) // if err != nil || !token.Valid { ctx.JSON(http.StatusUnauthorized, gin.H{"code": 401, "msg": "权限不足"}) ctx.Abort() return } //验证通过后获取claim中的userID userId := claims.UserId DB := common.GetDB() var user Model.User DB.First(&user, userId) //用户不存在 if userId == 0 { ctx.JSON(http.StatusUnauthorized, gin.H{"code": 401, "msg": "权限不足"}) ctx.Abort() return } //用户存在,将user的信息写入上下午。 ctx.Set("user", user) ctx.Next() }} 同时在jwt.go中增加token解析代码
func ParseToken(tokenString string) (*jwt.Token, *Claims, error) { claims := &Claims{} token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (i interface{}, err error) { return jwtKey, nil }) return token, claims, err} 本次练习到此结束。
友情援助
有问题的可以关注公众号,博主会在24小时内回复。



