新Sir

导航

 

简单的中间件 权限认证

demo 

 

func JWTAuthMiddleware() func(c *gin.Context) {
	return func(c *gin.Context) {
		staffName := c.Request.Header.Get("staff_name")
		stafEmail := c.Request.Header.Get("staff_email")
		staffId := c.Request.Header.Get("staff_id")
		if staffName == "" || stafEmail == "" || staffId == "" {
			base.ResponseError(c, base.AuthFail)
			c.Abort()
			return
		}

		//// 按空格分割
		//parts := strings.SplitN(staff_name, " ", 2)
		//if !(len(parts) == 2 && parts[0] == "Bearer") {
		//	base.ResponseError(c, base.CodeInvalidToken)
		//	c.Abort()
		//	return
		//}
		//
		//mc, err := jwt.ParseToken(parts[1])
		//if err != nil {
		//	base.ResponseError(c, base.CodeInvalidToken)
		//	c.Abort()
		//	return
		//}
		c.Set(base.CtxStaffNameKey, staffName)

		c.Next() // 后续的处理请求的函数中 可以用过c.Get(CtxUserIDKey) 来获取当前请求的用户信息
	}
}

  

 

请求的时候, 需要请求头携带信息

 

		staffName := c.Request.Header.Get("staff_name")
		stafEmail := c.Request.Header.Get("staff_email")
		staffId := c.Request.Header.Get("staff_id")

  

 

没有携带就 会提示异常 无法访问接口。

 

 

请求例子:

去掉staff_name 尝试发送请求 

 

 

成功请求:

 

posted on 2022-05-06 09:51  新Sir  阅读(261)  评论(0编辑  收藏  举报