123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package middleware
- import (
- "bytes"
- "github.com/gin-gonic/gin"
- "iot_manager_service/util/common"
- "net/http"
- "strings"
- )
- type CustomResponseWriter struct {
- gin.ResponseWriter
- body *bytes.Buffer
- Host string
- }
- func (w CustomResponseWriter) Write(b []byte) (int, error) {
- w.body.Write(b)
- if strings.Contains(w.Host, "cloud.long-chi.com") {
- old := string(b)
- //为兼容https,此处需要修改下
- new := strings.ReplaceAll(old, "http://110.40.223.170:9000/", "https://cloud.long-chi.com/")
- new = strings.ReplaceAll(new, "http://106.52.134.22:9099/", "https://cloud.long-chi.com/")
- b = []byte(new)
- }
- return w.ResponseWriter.Write(b)
- }
- func (w CustomResponseWriter) WriteString(s string) (int, error) {
- w.body.WriteString(s)
- return w.ResponseWriter.WriteString(s)
- }
- func CheckAuth() gin.HandlerFunc {
- return func(ctx *gin.Context) {
- //该路由下不校验token
- if strings.Contains(ctx.Request.RequestURI, "/login") ||
- strings.Contains(ctx.Request.RequestURI, "/captcha") ||
- strings.Contains(ctx.Request.RequestURI, "/tenant/info") ||
- strings.Contains(ctx.Request.RequestURI, "/api/ctwing/aep/callback") ||
- strings.Contains(ctx.Request.RequestURI, "/token") {
- ctx.Next()
- return
- }
- authorization := ctx.GetHeader(Authorization)
- if authorization != "" {
- token := ParseAccessToken(authorization)
- if token != nil {
- ctx.Set(Authorization, token)
- blw := &CustomResponseWriter{body: bytes.NewBufferString(""), ResponseWriter: ctx.Writer, Host: ctx.Request.Host}
- ctx.Writer = blw
- ctx.Next()
- return
- }
- }
- ctx.JSON(http.StatusUnauthorized, common.NormalResponse(http.StatusUnauthorized, "token is invalid", nil))
- ctx.Abort()
- }
- }
|