当前位置: 首页 > news >正文

go-中间件的使用

中间件介绍

  • Gin框架允许开发者在处理请求的过程中加入用户自己的钩子(Hook)函数
  • 这个钩子函数就是中间件,中间件适合处理一些公共的业务逻辑
  • 比如登录认证,权限校验,数据分页,记录日志,耗时统计

1.定义全局中间件

package mainimport ("fmt""github.com/gin-gonic/gin"
)// 4.定义全局中间件
func MiddleWare() gin.HandlerFunc {return func(c *gin.Context) {fmt.Println("我是一个全局中间件")}
}func main() {// 1.实力化引擎r := gin.Default()//  全局使用中间件r.Use(MiddleWare())//  2. 配置路由r.GET("/hello", func(c *gin.Context) {fmt.Println("执行hello")c.JSON(200, gin.H{"msg": "执行成功"})})//  3. 启动服务fmt.Println("服务启动成功:http://127.0.0.1:8080/hello")r.Run(":8080")
}

2.定义局部中间件

func main() {// 1.实力化引擎r := gin.Default()//  2. 配置路由r.GET("/hello", func(c *gin.Context) {fmt.Println("执行hello")c.JSON(200, gin.H{"msg": "执行成功"})})// 局部使用中间件r.GET("/hook", MiddleWare(), func(c *gin.Context) {fmt.Println("执行hello")c.JSON(200, gin.H{"msg": "执行hook成功"})})//  3. 启动服务fmt.Println("服务启动成功:http://127.0.0.1:8080/hello")r.Run(":8080")
}

中间件的应用

package mainimport ("fmt""github.com/gin-gonic/gin"
)// 4.定义全局中间件
func Auth() gin.HandlerFunc {return func(c *gin.Context) {//  1. 获取tokentoken := c.Request.Header.Get("token")fmt.Println(token)if token != "123456" {c.String(403, "token验证失败")c.Abort() // 终止请求return}c.Next()}
}func main() {// 1.实力化引擎r := gin.Default()//  2. 配置路由r.GET("/index", func(c *gin.Context) {c.JSON(200, gin.H{"msg": "index无需登录可以访问"})})r.GET("/home", Auth(), func(c *gin.Context) {c.JSON(200, gin.H{"msg": "home需登录验证才能访问"})})//  3. 启动服务fmt.Println("服务启动成功:http://127.0.0.1:8080/hello")r.Run(":8080")
}

token验证失败直接反馈403
在这里插入图片描述
验证成功才能访问
在这里插入图片描述
在这里插入图片描述

http://www.xdnf.cn/news/477091.html

相关文章:

  • Spring MVC 对 JavaWeb 的优化:从核心组件到注解
  • CentOS系统中升级Python 3.12.2版本
  • 数据通信原理 光纤通信 期末速成
  • 【Umi】项目初始化配置和用户权限
  • Chrome拓展(Chrome Extension)开发定时任务插件
  • 掌握 Kotlin Android 单元测试:MockK 框架深度实践指南
  • npm cross-env工具包介绍(跨平台环境变量设置工具)
  • A2A vs MCP vs AG-UI
  • 在微创手术中使用Kinova轻型机械臂进行多视图图像采集和3D重建
  • CSS实现文本自动平衡text-wrap: balance
  • 容器化-k8s-使用和部署
  • 能源数字化转型关键引擎:Profinet转Modbus TCP网关驱动设备协同升级
  • 从XSS到“RCE“的PC端利用链构建
  • 消防应急处置管理的全流程概述
  • 软件架构风格系列(3):管道 - 过滤器架构
  • 顶层架构 - 消息集群推送方案
  • 【风控】用户特征画像体系
  • 第一次做逆向
  • oracle linux 95 升级openssh 10 和openssl 3.5 过程记录
  • kubernetes的service与服务发现
  • 7 个正则化算法完整总结
  • 快慢指针算法(Floyd 判圈算法)
  • pytorch 15.1 学习率调度基本概念与手动实现方法
  • SSH认证核心机制
  • 索恩格汽车SEG Automotive EDI 需求分析
  • 用 Rust 带你了解 TCP 和 UDP
  • Neo4j(一) - Neo4j安装教程(Windows)
  • 事件驱动架构:从传统服务到实时响应的IT新风潮
  • 泰迪杯特等奖案例深度解析:基于多模态融合与小样本学习的工业产品表面缺陷智能检测系统
  • 主流数据库运维故障排查卡片式速查表与视觉图谱