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

成功请求:

浙公网安备 33010602011771号