简单的中间件 权限认证
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 尝试发送请求
成功请求: