There was an error while loading. Please reload this page.
中间件为过滤进入应用程序的 HTTP 请求提供了一种方便的机制。例如一个中间件来验证用户的身份认证。如果用户没有通过身份认证,中间件会将用户重定向到登录界面。但是,如果用户被认证,中间件将允许该请求进一步进入该应用。
当然,除了身份认证以外,还可以编写另外的中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间件可以记录所有传入应用的请求。
app/http/middlewares
入口->中间件1(before)->中间件N(before)->控制器->中间件N(after)->中间件1(after)—>结束
示例代码
func TokenHandler(c *gin.Context) { //before request CheckToken()//检测请求中的token是否合法 c.Next() //执行下一个中间件或者控制器逻辑 //after request ResetToken()//重置返回的token }
结合路由模块使用中间件
func RegisterRoute(router *gin.Engine) { //middleware: 服务错误处理 => 生成请求id => access log router.Use(middlewares.ServerRecovery(), middlewares.TokenHanlder) router.NoRoute(controllers.Error404) router.GET("/hello", controllers.HandleHello) //api版本 v1 := router.Group("/v1") { v1.Use(middlewares.Auth) v1.GET("/banner_list", controllers.GetBannerList) } }