gin框架middleware中间件如何中途跳出
背景
我在是使用gin web框架的时候需要自定义鉴权方式,那当然就要用到middleware这个方式了,代码如下所示,需要判断uid和token是否合法,不合法直接返回401状态,不继续往下执行
    // 设置middleware
	e := gin.New()
	e.Use(gin.Recovery())
	e.Use(utils.UserAuth)
	e.GET("/", func(c *gin.Context) {
		c.JSON(
			http.StatusOK,
			gin.H{
				"code":  http.StatusOK,
				"error": "Welcome server 01",
			},
		)
	})
	// UserAuth 用户鉴权
func UserAuth(c *gin.Context) {
	if GetUidFromCookie(c) == 0 {
		c.JSON(http.StatusUnauthorized, gin.H{"code": 401})
	}
}
问题
不生效,发现响应状态码虽然设置对了,但是这响应体不对啊,怎么不跳出啊
 
解决方法
在gin的文档上找了一圈,也没看到相关的信息,还是从stackoverflow找了几篇,才发现需要额外加点代码,正确代码如下
// UserAuth 用户鉴权
func UserAuth(c *gin.Context) {
	if GetUidFromCookie(c) == 0 {
		c.JSON(http.StatusUnauthorized, gin.H{"code": 401})
		c.Abort() // 跳出
		return
	}
	c.Next() // 继续
}
效果图如下
 


















