栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Go 语言web 框架 Gin 练习5

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go 语言web 框架 Gin 练习5

目录

文章目录

  • 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小时内回复。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268492.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号